독서하는 개발자's Blog

반응형


[에러 발생]

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

 




반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band