개발하는 '정'/DB
[MYSQL] COUNT의 MAX 구하기 (GROUP BY 2개 이상)
주앤정_블로그
2022. 7. 13. 15:27
여러 커뮤니티에 질의를 올려도 단일 행 GROUP BY 인 경우만 알려줘서..
그래도 많은 사람들의 도움을 받아 해결했기 때문에
다른 사람들에게도 도움이 될까 싶어서 적어본다..
"select 필드1, 필드2, count(*) from TABLE group by 필드1, 필드2;"
쿼리를 실행하면 아래 표와 같은 결과가 나오는데,
필드 2가 중복되는 경우 필드1과 상관없이 COUNT(*)가 제일 큰 값만 가지고 오고 싶은 상황.
(필드1 값이 18,19인 행만 남게)
필드1 | 필드2 | count(*) |
18 | 7 | 3 |
19 | 9 | 5 |
20 | 9 | 1 |
아래 쿼리를 쓰면
SELECT t1.*
FROM (
SELECT 필드1, 필드2, count(*) as cnt
FROM TABLE
GROUP BY 필드1, 필드2
) t1
INNER JOIN
(
select 필드2,max(cnt) as max from (
SELECT 필드1, 필드2, count(*) as cnt
FROM TABLE
GROUP BY 필드1, 필드2
) c
GROUP BY 필드2
) t2
ON t1.필드2 = t2.필드2 AND t1.cnt = t2.max;
;
필드1 | 필드2 | count(*) |
18 | 7 | 3 |
19 | 9 | 5 |
필드 2 중복이 제거된다.
다 짜고 보니 정말 간단한데, 짜는 내내 생각보다 골머리를 앓았다. 갈 길이 한참 멀었구나 싶다ㅠ
반응형