2020. 11. 5. 19:19ㆍDB/쿼리
SELECT DEPT_NM, COUNT (*) FROM HRM_DEPT GROUP BY DEPT_NM
OVER 함수를 쓰지 않으면 GROUP BY를 이용하여 전체 행의 수를 확인할 수 있다.
SELECT DEPT_NM, COUNT (*) OVER () FROM HRM_DEPT
OVER 함수를 쓰면 GROUP BY를 이용하지 않아도 전체 행의 수를 구할 수 있다.
SELECT DEPT_NM, COUNT (DISTINCT DEPT_CD) OVER () FROM HRM_DEPT
부서이름과 중복되지 않는 부서코드를 가진 부서 행의 수를 반환
SELECT DEPT_NM, COUNT (*) OVER (PARTITION BY DEPT_CD) FROM HRM_DEPT
부서이름과 부서코드로 나눈 부서 행의 수를 반환
PARTITION BY 는 GROUP BY 같은 개념이라고 생각하면 된다.
COUNT(*) OVER() : 전체 행의 수 반환
COUNT(*) OVER(PARTITION BY 컬럼) : 컬럼 그룹으로 나누어 행의 수 반환
출처: https://syoons.tistory.com/8 [새싹블로그]
*참고 (그룹별 최대값 구하기)
SELECT
svc_mm,
track_id,
sett_idx,
ratio
FROM
(SELECT
svc_mm,
track_id,
sett_idx,
ratio,
ROW_NUMBER() OVER(PARTITION BY svc_mm, track_id ORDER BY sett_idx DESC) as row_idx
FROM
tmp_test)
WHERE
row_idx = 1;
->svc_mm, track_id를 그룹으로 묶어서 해당그룹별 sett_idx 최대값을 가져옴
'DB > 쿼리' 카테고리의 다른 글
[SQL] 논리연산자 우선순위 (0) | 2022.08.24 |
---|---|
[SQL] 특수문자의 이스케이프 처리방법 (0) | 2022.08.24 |
[ORACLE] 사용자 계정 생성/권한 부여/계정 삭제 (0) | 2020.12.15 |
[ORACLE] 페이징쿼리 (0) | 2020.11.11 |
[ORACLE] 숫자 3자리마다 콤마찍기 (0) | 2020.11.10 |