프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN 문제 풀이 모음 (MySQL)

정진희·2025년 4월 14일

SQL 문제 풀이

목록 보기
2/6
post-thumbnail

모든 문제 풀이 완료 😄

[Lv.1] - 가장 비싼 상품 구하기

SELECT MAX(PRICE)
FROM PRODUCT;

[Lv.1] - 잡은 물고기 중 가장 큰 물고기의 길이 구하기

SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO;

[Lv.1] - 최댓값 구하기

SELECT MAX(DATETIME)
FROM ANIMAL_INS;

[Lv.2] - 동물 수 구하기

SELECT COUNT(ANIMAL_ID) count
FROM ANIMAL_INS;

[Lv.2] - 최솟값 구하기

SELECT MIN(DATETIME)
FROM ANIMAL_INS;

[Lv.2] - 가격이 제일 비싼 식품의 정보 출력하기

  • 서브쿼리를 사용한 방법

    SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
    FROM FOOD_PRODUCT
    WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
  • 내림차순을 사용한 방법 : 내림차순으로 정렬해서 가장 상위 값 1개 출력

    SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
    FROM FOOD_PRODUCT
    ORDER BY PRICE DESC
    LIMIT 1;

[Lv.2] - 조건에 맞는 아이템들의 가격의 총합 구하기

SELECT SUM(PRICE) TOTAL_PRICE
FROM ITEM_INFO
WHERE RARITY = 'LEGEND';

[Lv.2] - 중복 제거하기

  • 중복을 허용하지 않는 컬럼에 DISTINCT를 적용시켜서 COUNT로 개수 세기
    SELECT COUNT(DISTINCT NAME) count
    FROM ANIMAL_INS;

[Lv.2] - 연도별 대장균 크기의 편차 구하기

SELECT SIZE_YEAR AS YEAR, (MAX_SIZE - E.SIZE_OF_COLONY) AS YEAR_DEV, E.ID
FROM ECOLI_DATA AS E JOIN (
                            SELECT YEAR(DIFFERENTIATION_DATE) AS SIZE_YEAR, MAX(SIZE_OF_COLONY) AS MAX_SIZE
                            FROM ECOLI_DATA
                            GROUP BY YEAR(DIFFERENTIATION_DATE)
                          ) AS SIZE_DATA ON YEAR(E.DIFFERENTIATION_DATE) = SIZE_YEAR
ORDER BY 1, 2;

[Lv.3] - 물고기 종류 별 대어 찾기

  • (FISH_TYPE, LENGTH)는 서브쿼리에서 반환된 (FISH_TYPE, MAX(LENGTH)) 값들과 정확히 일치하는 경우만 필터링한다.
    SELECT ID, FISH_NAME, LENGTH
    FROM FISH_INFO JOIN FISH_NAME_INFO USING(FISH_TYPE)
    WHERE (FISH_TYPE, LENGTH) IN (SELECT FISH_TYPE, MAX(LENGTH) FROM FISH_INFO GROUP BY 1)
    ORDER BY 1;
profile
고민하고, 공부해서 발전하는 개발자가 되자🔥

0개의 댓글