summery용으로 많이 사용하는 over (partition by... 구문.
partition by를 쉽게 설명하면, "구문마다 group by 하여 컬럼에 값을 담는다."로 표현할 수 있겠다.
아래에 긴 설명 없이도 쉽게 이해 할 수 있는 쿼리 하나를 적어 본다.
다양하게 이용해 보자.
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 28 29 | SELECT A.이름, A.성별, A.과목, A.점수 , MAX(점수) OVER (PARTITION BY 이름) AS 개인별최고점수 , AVG(점수) OVER (PARTITION BY 이름) AS 개인별평균점수 , SUM(점수) OVER (PARTITION BY 0) AS 전체점수합계 , COUNT(과목) OVER (PARTITION BY 이름) AS 개인별수강과목 , SUM(점수) OVER (PARTITION BY 성별, 과목) AS 성별과목별점수합계 , 과목 || '_' || ROW_NUMBER() OVER (PARTITION BY 과목 ORDER BY 점수 DESC) AS 과목별등수 , 성별 || '_' || RANK() OVER (PARTITION BY 성별 ORDER BY 점수 DESC) AS 성별등수 FROM ( SELECT 'A' AS 이름, 'F' AS 성별, 'KOR' AS 과목, 90 AS 점수 FROM DUAL UNION SELECT 'A', 'F', 'MAT', 95 FROM DUAL UNION SELECT 'B', 'M', 'KOR', 80 FROM DUAL UNION SELECT 'B', 'M', 'MAT', 100 FROM DUAL UNION SELECT 'C', 'F', 'KOR', 70 FROM DUAL UNION SELECT 'C', 'F', 'MAT', 85 FROM DUAL UNION SELECT 'D', 'M', 'KOR', 90 FROM DUAL ) A ORDER BY A.이름, A.과목 ; | cs |
'Oracle' 카테고리의 다른 글
오라클 트리 쿼리 START WITH, CONNECT BY PRIOR (0) | 2024.02.22 |
---|---|
오라클 merge into 간단설명 및 예제 (0) | 2024.02.16 |
오라클 with 간단 설명 및 예제 (With... Select) (1) | 2024.02.16 |
오라클 ora-01846 에러 : NEXT_DAY 함수 사용시 처리방법 (0) | 2024.02.16 |
오라클 LISTAGG 간단 설명 및 예제 (0) | 2024.02.15 |