자신에게 친절할 것 :)

Data Science/MySQL

[HackerRank sql] join 동시에 여러 개, 집계 함수 위치

Tashapark 2025. 1. 25. 17:34
728x90
반응형

Top Competitors

discussion을 보면서  여러 개의 조인을 동시에 쓰는 것과

on 대신 using (같은 칼럼명) 을 쓰는 것까지는 기억했다.

count()도 위치가 where에 있으면 안 되는  것까지는 알겠으나,,

어떻게 손을 대야 할지를 모르고 멈춘 후 지피티에게 물었다. 

 

수정 전

select h.hacker_id, h.name
from kackers h
join submissions s using(hacker_id)
join challenges c using(challenge_id)
join difficulty d using(difficulty_level)
where count(s.score = d.score) as t_s > 1 -- 여기가 문제인데.. 하.. 모르겠더라
order by t_s desc, hacker_id asc;

 

- 집계함수 사용시 오더바이 반드시 써줄 것

- 그룹바이 조건은 해빙으로 해줄 것. 

 

수정 후

SELECT 
    h.hacker_id, 
    h.name
FROM 
    hackers h
JOIN -- 이렇게 조인을 한 번에 쓰는 것도 가능함. 
    submissions s USING(hacker_id)
JOIN 
    challenges c USING(challenge_id)
JOIN 
    difficulty d USING(difficulty_level)
where s.score = d.score -- where에 조건을 두면서 
GROUP BY -- 그룹바이는 집계함수 사용 시, 반드시 아니면 전체 데이터로 계산됨. 
    h.hacker_id, h.name
HAVING 
    count(s.submission_id) > 1 -- 제출한 개수가 1개 초과한 경우로 생각 
ORDER BY 
    count(s.submission_id) DESC, -- 오더 바이에서는 집계함수 가능 
    h.hacker_id ASC;

 

728x90
반응형