group by 시 원하는 조건만 출력하고 싶습니다. 0 2 3,897

by 거북이 [SQL Query] 오라클 sql 쿼리 [2024.01.31 15:32:40]


SELECT CLASS_NO, NAME FROM A GROUP BY CLASS_NO, NAME ;

이렇게 조회했을때

CLASS_NO NAME
1 A
2 A
3 A
3 B
3 C
3 D
4 C
5 B
5 D

 

이렇게 나올 경우, CLASS_NO가

1은 1개, 2는 1개, 3은 4개, 4는1개, 5는 2개 입니다.

 

이때 CLASS_NO의 갯수가4개 이상이면 제외 시키고 싶습니다. 즉 3의 CLASS_NO는 제외 하고 출력하고 싶습니다.

CLASS_NO NAME
1 A
2 A
4 C
5 B
5 D

 

기존의 SELECT CLASS_NO, NAME FROM A GROUP BY CLASS_NO, NAME ; 쿼리에서 변형되도록 도와주시면 감사하겠습니다.

by 마농 [2024.01.31 15:51:53]
WITH a AS
(
SELECT 1 class_no, 'A' name FROM dual
UNION ALL SELECT 2, 'A' FROM dual
UNION ALL SELECT 3, 'A' FROM dual
UNION ALL SELECT 3, 'B' FROM dual
UNION ALL SELECT 3, 'C' FROM dual
UNION ALL SELECT 3, 'D' FROM dual
UNION ALL SELECT 4, 'C' FROM dual
UNION ALL SELECT 5, 'B' FROM dual
UNION ALL SELECT 5, 'D' FROM dual
)
SELECT class_no, name
  FROM (SELECT class_no, name
             , COUNT(*) OVER(PARTITION BY class_no) cnt
          FROM a
         GROUP BY class_no, name
        )
 WHERE cnt < 4
;

 


by 거북이 [2024.02.01 11:27:20]

감사합니다! 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입