한 테이블 안에 ID, 날짜, IP의 데이터가 있습니다.
이걸
ID | 1월 | 2월 | ~ |12월 | 전체
아이디별 데이터는 각 월의 IP데이터의 중복값을 제거한 카운트이며
정렬은 전체 카운트가 큰것을 기준으로 내림 차순 정렬입니다.
한개의 월 기준은 잘 되는데
한번에 조회해서 하려니 어려워서 올려봅니다.
1. 날짜는 자료형이 뭔가요? Date / Varchar2
2. Varchar2 라면 저장 포멧은? yyyymmdd / yyyy-mm-dd
3. 전체 카운트는 어떻게 구하나요?
- 월 Distinct IP 카운트의 합
- 년 Distinct IP 카운트
1. DATE 형입니다.
2. DATE형
3. 딱히 정해지지 않았지만 년 의 카운트를 생각했습니다.
SELECT id , COUNT(DISTINCT DECODE(mm, '01', ip)) m01 , COUNT(DISTINCT DECODE(mm, '02', ip)) m02 , COUNT(DISTINCT DECODE(mm, '03', ip)) m03 , COUNT(DISTINCT DECODE(mm, '04', ip)) m04 , COUNT(DISTINCT DECODE(mm, '05', ip)) m05 , COUNT(DISTINCT DECODE(mm, '06', ip)) m06 , COUNT(DISTINCT DECODE(mm, '07', ip)) m07 , COUNT(DISTINCT DECODE(mm, '08', ip)) m08 , COUNT(DISTINCT DECODE(mm, '09', ip)) m09 , COUNT(DISTINCT DECODE(mm, '10', ip)) m10 , COUNT(DISTINCT DECODE(mm, '11', ip)) m11 , COUNT(DISTINCT DECODE(mm, '12', ip)) m12 , COUNT(DISTINCT ip) tot FROM (SELECT id , ip , TO_CHAR(dt, 'mm') mm FROM t WHERE dt >= TO_DATE('2018' || '0101', 'yyyymmdd') AND dt < TO_DATE('2018' || '1231', 'yyyymmdd') + 1 ) GROUP BY id ;
답변 감사합니다.
조언 해주신대로 해서 실행 해본 결과
FROM 절 ip 부분에서 ORA-00938이 발생하네요.......
글쎄요?
저는 테스트 해보고, 결과 정상 확인하고 올린 건데요.
해당 오류는 함수의 인수가 부족하다는 것인데
적용 쿼리 중 함수의 인수가 부족한 부분이 없는지 확인해 보세요.
네네 답변감사합니다
수고하세용~