![](https://t1.daumcdn.net/cfile/tistory/99D00E385CD4DA801B)
[에러 발생]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | SELECT ROW_NUMBER() OVER(ORDER BY reg_dt DESC) rnum, star, content, TO_CHAR(reg_dt, 'YYYY-MM-DD HH24:MI:SS') AS reg_dt, COUNT(star) AS totalCnt FROM (SELECT star, content, reg_dt FROM tb_survey ) WHERE 1=1 AND TO_CHAR(reg_dt, 'YYYY') = '2019' AND star = '2'; | cs |
[이유 & 해결책]
위에 쿼리를 실행해보면 ROW_NUMBER 문법안에 있는 reg_dt에 블럭이 쳐진다. *오류
오류의 내용 : not a single-group group function
해석 : 단일 그룹의 그룹함수가 아닙니다.
왜?? COUNT 함수는 그룹함수이다. 그룹함수에는 COUNT, SUM, AVG, MAX, MIN 등이 있고
SELECT 절에 그룹함수를 쓰게되면 나머지 SELECT절에 들어가는 컬럼은 GROUP BY절을 사용하거나 그룹함수만 들어갈 수 있다.
위에 쿼리에서 오류가 난 이유는 COUNT라는 그룹함수를 사용함으로써, GROUP BY를 사용하지않은 reg_dt, star, content에서
오류가 발생하는 것.
해결책 : GROUP BY함수를 사용하여 그룹별로 묶어서 SELECT하거나, 그룹함수를 사용하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | SELECT ROW_NUMBER() OVER(ORDER BY reg_dt DESC) rnum, star, content, TO_CHAR(reg_dt, 'YYYY-MM-DD HH24:MI:SS') AS reg_dt, COUNT(star) AS totalCnt FROM (SELECT star, content, reg_dt FROM tb_survey ) WHERE 1=1 AND TO_CHAR(reg_dt, 'YYYY') = '2019' AND star = '2' GROUP BY reg_dt, star, content; | cs |