SQL JOIN 1문제 & GROUP BY 2문제 &SELECT 1문제 풀이 (프로그래머스)

는는·2023년 1월 16일
0

SQL - 문제 풀이

목록 보기
8/77

성분으로 구분한 아이스크림 총 주문량

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

JOIN으로 두 테이블을 합쳐줍니다.

SELECT *
FROM First_half AS a JOIN icecream_info AS b
ON a.flavor = b.flavor

GROUP BY ingredient_type
ORDER BY count(total_order) DESC

GROUP BY로 컬럼을 기준으로 나눠주고 ORDER BY로 total_order를 숫자를 세워주고, 내림차순으로 정렬해주면 이런 결과가 나옵니다.

마지막으로 지정해준 컬럼 값 총 주문량을 합해주면 정답입니다.

SELECT ingredient_type, SUM(total_order) AS total_order

정답

SELECT ingredient_type, SUM(total_order) AS total_order
FROM First_half AS a JOIN icecream_info AS b
ON a.flavor = b.flavor
GROUP BY ingredient_type
ORDER BY count(total_order) DESC

고양이와 개는 몇 마리 있을까

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

고양이와 개의 숫자를 구하는 문제입니다.

첫 번째로 모든 컬럼의 값을 봅니다.

SELECT *
FROM animal_ins

animal_type의 컬럼만 조회 후 고양이와 개의 마리수의 컬럼을 만들어줍니다.

SELECT animal_type,count(animal_type) AS count
FROM animal_ins

여기서 GROUP BY로 컬럼을 기준으로 나눠주고 ORDER BY로 정렬해주면 정답입니다.

GROUP BY animal_type
ORDER BY animal_type

정답

SELECT animal_type,count(animal_type) AS count
FROM animal_ins
GROUP BY animal_type
ORDER BY animal_type

평균 일일 대여 요금 구하기

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

모든 컬럼을 불러옵니다.

SELECT *
FROM car_rental_company_car

car_type이 SUV인 컬럼들을 불러옵니다.

WHERE car_type ='SUV'

AVG로 평균을 내주고, 일일 대여 요금을 첫 번째 자리에서 반올림 해주고, average_fee 로 컬럼명을 지정해줍니다.

SELECT ROUND(avg(daily_fee),0) AS average_fee

정답

SELECT ROUND(avg(daily_fee),0) AS average_fee
FROM car_rental_company_car
WHERE car_type ='SUV'

주문량이 많은 아이스크림들 조회하기

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

두 테이블을 합치고 7월 아이스크림 총 주문량과 상반기 아이스크림의 총 주문량 더한 후 큰 순서대로 상위 3개의 맛을 조회하는 문제입니다.

일단 두 테이블을 join으로 합칩니다.

SELECT *
FROM first_half AS a join july AS b ON a.flavor = b.flavor

합친 후 GROUP BY 로 first_half의 flavor 컬럼 기준으로 나누고, a.flavor 컬럼만 봅니다

마지막으로 아이스크림 총 주문량과 상반기 아이스크림의 총 주문량을 더해줘야하는데요. ORDER BY로 총 주문량을 더 해 준 후 내림차순을 해줍니다.

ORDER BY SUM(a.total_order) + SUM(b.total_order) DESC

마지막으로 상위 3 개만 출력하게 하면 정답 입니다.

LIMIT 3

정답

SELECT a.flavor
FROM first_half AS a join july AS b ON a.flavor = b.flavor
GROUP BY a.flavor
ORDER BY SUM(a.total_order) + SUM(b.total_order) DESC
LIMIT 3

0개의 댓글