본문 바로가기

SQL

[MySQL] solvesql 최고의 근무일을 찾아라 분석

문제 - https://solvesql.com/problems/best-working-day/

 

정답

 

select day, ROUND(SUM(tip), 3) as tip_daily
from tips
group by day
order by tip_daily desc
limit 1;
SELECT 로 day 와 tip_daily 만 출력하게 한 후
 
tips 에서 찾는다
 
day 에서 그룹화를 하여
 
tip_daily 위주로 정렬하는 대신
 
순서를 반대로 정렬하여 높은 순부터 나오도록 한다
 
가장 많은 하루만 찾는 것이니
 
딱 한 개만 표시하기 위해 limit 를 1 로 걸어준다
 
다른 사람들의 풀이를 보면
 
ROUND 를 빼먹거나
 
HAVING 까지 쓰는 경우가 있는데
 
최대한 코드를 줄이는 것이 최적화하는데 좋다
 
솔직히 주어진 답에서 ROUND 를 안써도 상관없다
 
그러나 그날의 팁 총액을 소수점 셋째 자리에서 반올림하여 출력하라는 조건이 있으니
 
반드시 써줘야 한다

 

그러므로 정답은 위와 같이 작성해야 한다