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 ; 쿼리에서 변형되도록 도와주시면 감사하겠습니다.
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 ;