99클럽 코테 스터디 TIL - 프로그래머스 SQL (1)

혀니·2024년 4월 12일

코딩 TIL

목록 보기
15/28

프로그래머스 SQL 고득점 kit

정보처리기사 SQL 공부할 겸 SQL 문제도 풀어보았다.





https://school.programmers.co.kr/learn/courses/30/lessons/298518

프로그래머스 LV2 특정 물고기를 잡은 총 수 구하기

첫 SQL 문제.
문제가 정말 길지만 그래도 난이도는 엄청 쉬웠다 :D

다중 select 쓸 때는 where에 = 말고 in.

select count(*) as FISH_COUNT from FISH_INFO where FISH_TYPE in (select FISH_TYPE from FISH_NAME_INFO where FISH_NAME in ('BASS', 'SNAPPER'));

정보처리기사에서 이정도 난이도 혹은 조금 어렵게 나오는 것 같아서 보다 높은 단계를 풀어보았다.



https://school.programmers.co.kr/learn/courses/30/lessons/133027

프로그래머스 SQL LV4 주문량이 많은 아이스크림들 조회하기

정말 복잡해서 일단 하나하나 써보면서 풀었다.
레벨이 높은만큼 복잡하고 이걸 하나의 코드로 쓸 수 있다고? 생각이 들었다.
하나하나 변수로 저장할 수 있다면 정말 쉽고 보기 편할텐데...ㅠㅠ

풀이 순서

  1. 7월 아이스크림 총 주문량 (group by와 집계함수 sum을 사용하여 구함)
select FLAVOR, sum(TOTAL_ORDER) as 총주문량 from JULY group by FLAVOR;
  1. 상반기 아이스크림 총 주문량(상반기 테이블에 있는 TOTAL_ORDER 자체가 총 주문량이니 이건 패스)

  2. 1+2를 하고 값이 큰 순서대로 상위 3개 맛 조회
    일단 여기서 1, 2를 조인해야겠다고 생각했다. 맛이 같은 것대로 조인하고 1번 테이블과 2번 테이블의 TOTAL_ORDER을 더한 후 내림차순 desc을 사용.


    하지만 상위 n개를 조회하는 것은 처음 알았다.
    LIMIT n 을 사용하면 된다.

총 코드

SELECT A.FLAVOR from FIRST_HALF a JOIN 
(select FLAVOR, sum(TOTAL_ORDER) as TOTAL_ORDER from JULY group by FLAVOR) b 
on a.FLAVOR = b.FLAVOR order by (a.TOTAL_ORDER + b.TOTAL_ORDER) desc LIMIT 3;

0개의 댓글