Test

[MySQL] 그룹 스터디 3일 차 (11/7)

루루23 2024. 11. 8. 12:55
반응형

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

@ Level 4

@ JOIN

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
SELECT a.flavor
FROM first_half a
JOIN july b ON a.flavor = b.flavor
GROUP BY a.flavor
ORDER BY SUM(a.total_order)+SUM(b.total_order) desc
LIMIT 3;

 

 

프로그래머스 《즐겨찾기가 가장 많은 식당 정보 출력하기》 

@ Level 3

@ GROUP BY

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

 

GROUP BY 사용하지 않은 경우

SELECT food_type, rest_id, rest_name, favorites
FROM (
    SELECT 
    	food_type, rest_id, rest_name, favorites,
    	MAX(favorites) OVER (PARTITION BY food_type) max_f
        FROM rest_info
) t
WHERE favorites = max_f
ORDER BY food_type DESC;

 

이건 JOIN으로 풀었을 때 ~

SELECT a.food_type, rest_id, rest_name, favorites
FROM rest_info a
LEFT JOIN (
    SELECT food_type, MAX(favorites) max_f
    FROM rest_info 
    GROUP BY food_type
) b ON a.food_type = b.food_type
WHERE a.favorites = b.max_f
ORDER BY a.food_type DESC;

 

다른 풀이들은 안봐서 더 간단한 게 있는지는 모르겠다

 

 

프로그래머스 《헤비 유저가 소유한 장소

@ Level 3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
SELECT id, name, host_id
FROM places 
WHERE host_id IN (
    SELECT host_id
    FROM places
    GROUP BY host_id
    HAVING COUNT(*) > 1
);

 

 

프로그래머스 《오랜 기간 보호한 동물(1)

@ Level 3

@ JOIN

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
SELECT I.name, I.datetime
FROM animal_ins I
LEFT JOIN animal_outs O ON I.animal_id = O.animal_id
WHERE O.datetime IS NULL
ORDER BY I.datetime LIMIT 3;

 

반응형