상세 컨텐츠

본문 제목

[3주차] 프로그래머스: SUM, MAX, MIN / GROUP BY

SQL/SQL 문제풀이 스터디

by dundunee 2022. 11. 22. 00:40

본문

문제1. 프로그래머스 > SUM, MAX, MIN > 동물수구하기 #집계함수

SELECT COUNT(DISTINCT ANIMAL_ID) AS count
FROM ANIMAL_INS

 

문제2. 프로그래머스 > SUM, MAX, MIN > 중복제거하기 #집계함수 #중복제거 #결측값제외

SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL

 

문제3. 프로그래머스 > SUM, MAX, MIN > 가격이 제일 비싼 식품의 정보 출력하기 #집계함수 #서브쿼리

SELECT PRODUCT_ID,
      PRODUCT_NAME,
      PRODUCT_CD,
      CATEGORY,
      PRICE
FROM FOOD_PRODUCT
WHERE PRICE  = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

어떤 것 중 가장 가격이 크다, 혹은 어느 부서에서 가장 연봉이 높은 직원의 ~을 구하여라 하는 류의 문제는 WHERE절에 가격 혹은 SALARY에 대한 서브쿼리를 이용해서 풀면 쉽게 풀린다!

 

 

문제4. 프로그래머스 > GROUP BY > 진료과별 총 예약횟수 출력하기 #집계함수 #날짜함수 #GROUPBY

SELECT MCDP_CD AS 진료과코드,
       COUNT(DISTINCT PT_NO) AS 5월예약건수
FROM APPOINTMENT
WHERE YEAR(APNT_YMD) = 2022 AND MONTH(APNT_YMD) = 5
GROUP BY 진료과코드
ORDER BY 5월예약건수, 진료과코드

 

문제5. 프로그래머스 > GROUP BY > 식품분류별 가장 비싼 식품의 정보 조회하기 #집계함수 #서브쿼리 #GROUPBY

SELECT CATEGORY,
       PRICE, 
       PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (
SELECT CATEGORY,
       MAX(PRICE)
FROM FOOD_PRODUCT 
WHERE CATEGORY  IN ('과자', '국', '김치', '식용유') 
GROUP BY CATEGORY
 )
ORDER BY PRICE DESC

문제3과 마찬가지로 CATEGORY별로 높은 가격을 WHERE절의 서브쿼리로 추출해오면 문제를 쉽게 해결할 수 있다.

 

 

문제6. 프로그래머스 > GROUP BY > 성분으로 구분한 아이스크림 총주문량 #SUM #INNERJOIN #GROUPBY

SELECT II.INGREDIENT_TYPE,
       SUM(FH.TOTAL_ORDER) AS TOTAL_ORDER
FROM ICECREAM_INFO II
INNER JOIN FIRST_HALF FH ON II.FLAVOR = FH.FLAVOR
GROUP BY 1
ORDER BY TOTAL_ORDER

 

 

문제7. 프로그래머스 > GROUP BY > 즐겨찾기가 가장 많은 식당정보 출력하기 #MAX #GROUPBY #서브쿼리

SELECT FOOD_TYPE,
       REST_ID, 
       REST_NAME,
       FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN (
SELECT FOOD_TYPE,
       MAX(FAVORITES)
FROM REST_INFO 
GROUP BY 1
) 
ORDER BY FOOD_TYPE DESC

문제3, 문제5와 같이 음식타입별 가장 높은 즐겨찾기를 WHERE절에 서브쿼리로 추출해올 수 있다.

 

 

문제8. 프로그래머스 > GROUP BY > 고양이와 개는 몇마리있을까 #COUNT #WHERE #GROUPBY #ORDERBY

SELECT ANIMAL_TYPE,
       COUNT(DISTINCT ANIMAL_ID)
FROM ANIMAL_INS
WHERE ANIMAL_TYPE IN ('Cat', 'Dog')
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

 

 

문제9. 프로그래머스 > GROUP BY > 동명동물수찾기 #COUNT #ISNITNULL #GROUPBY #HAVING

SELECT DISTINCT NAME,
       COUNT(NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL 
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME

 

 

문제10. 프로그래머스 > GROUP BY > 입양시각구하기(1) #HOUR(DATETIME) #COUNT #BETWEEN #GROUPBY

SELECT HOUR(DATETIME) AS HOUR,
       COUNT(DISTINCT ANIMAL_ID) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 20
GROUP BY 1
ORDER BY 1

관련글 더보기