반응형
728x90
반응형
요건사항
USER 테이블에서 USER_GRP_ID 의 그룹 별 USER_GENDER 개수와 USER_AGE 개수를 알고싶다.
- SELECT * FROM USER;
USER_ID | USER_GENDER | USER_AGE | USER_GRP_ID |
1 | F | 22 | U001 |
2 | F | 22 | U001 |
3 | M | 20 | U001 |
4 | M | 20 | U002 |
5 | F | 23 | U003 |
6 | M | 23 | U003 |
- 원하는 결과
USER_GRP_GENDER_CNT | USER_GRP_AGE_CNT | USER_GRP_ID |
2 | 2 | U001 |
1 | 1 | U002 |
2 | 1 | U003 |
- 설명
** U001의 경우
USER_GENDER = F,M, USER_AGE = 22, 20 일 경우로 각 2개, 2개가 나온다.
** U002의 경우
USER_GENDER= M, USER_AGE = 20 일 경우로 각 1개, 1개가 나온다.
** U003의 경우
USER_GENDER = F, M, USER_AGE = 23 일 경우로 각 2개, 1개가 나온다.
수행 쿼리
SELECT DISTINCT
COUNT(DISTINCT T.USER_GENDER) OVER(PARTITION BY T.USER_GRD_ID) AS USER_GRP_GENDER_CNT
, COUNT(DISTINCT T.USER_AGE) OVER (PARTITION BY T.USER_GRD_ID) AS USER_GRP_AGE_CNT
, T.USER_GRP_ID
FROM USER T
WHERE 1 = 1
- COUN() OVER 사용
COUNT(DISTINCT T.USER_GENDER) OVER(PARTITION BY T.USER_GRD_ID) AS USER_GRP_GENDER_CNT
T.USER_GRD_ID 별 USER_GENDER 중복 제거한 그룹화한 개수를 구한다.
반응형
'Coding > SQL Query' 카테고리의 다른 글
[Mysql] 특정 database 안의 모든 테이블 데이터 삭제 (0) | 2021.11.03 |
---|---|
[Oracle] TO_DATE, TO_CHAR (ORA-10858, ORA-01481 에러) (0) | 2021.07.05 |
[Oracle] startDate-endDate 기준 포함되는 월(Month) 조회 (0) | 2021.07.05 |
WM_CONCAT()를 사용하여 열-> 행(, 구분)으로 바꾸기 (0) | 2020.01.19 |
mysql > 24시간 이내에 업로드된 데이터 찾기 (0) | 2018.10.29 |