내배캠/TIL
[TIL/24-01-09]
PARK JI HO
2024. 1. 9. 20:46
해커랭크 : TOP Earners
months* salary를 해서 가장 높은 사람의 수를 세는 문제
샘플 출력 :
69952 1
1.
select months * salary as earnings, count(*)
from Employee
group by earnings
order by 1 desc
limit 1
샘플 출력을 보면 (가장 높은 금액 1) 이런 식으로 출력을 해야 한다.
months * salary를 해주고 그 값들로 group by를 해주고 카운트를 했다.
그러면 각 값별로 카운트가 되었을 것이고 내림차순을 한 다음 하나만 추출하면 가장 높은 금액이 나오게 된다
2.
select max(sub.earnings), sub.cnt
from
(select months * salary as earnings, count(*) as cnt
from employee
group by earnings)sub
group by earnings
order by 1 desc
limit 1
from절 서브쿼리를 이용해서도 풀어봤다.
서브쿼리 안에서 earnings와 액수별로 카운트를 해준 다음 서브쿼리 밖에서 max를 통해 가장 높은 금액을 뽑았다.
그다음은 정렬 후 limit 1
3.
select months * salary as earnings , count(*)
from employee
where months * salary = (select max(salary * months) from employee)
group by earnings
이번엔 where 절에 서브쿼리를 이용했는데
months * salary 조건을 서브쿼리로 max(salary * months)를 줬다.
해커랭크 문제를 풀기 시작했는데 영어라서 문제 읽기가 너무 힘들다 ........
한글로 번역하면 내가 작성하는 쿼리들도 한글로 번역되면서 막 글자가 왔다갔다 이상해진다 ㅜㅜ
자동완성 기능도 없고 실행 속도도 너무 느리다..
solvesql 최고