코딩테스트/SQL 문제

[프로그래머스] 131697 가장 비싼 상품 구하기 - SQL

glorypang 2025. 3. 28. 23:41
728x90
반응형
SMALL

📌 문제 정보

  • 출처: 문제 링크
  • 난이도: ⭐
  • 문제 유형: 집계 함수
  • 사용 언어: SQL

🔍 문제 설명

다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

 

PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요.


💡 풀이 노트

💡 그룹 함수란?

다수의 행을 입력으로 받아 하나의 요약 값을 반환하는 함수
일반적으로 `GROUP BY` 절과 함께 사용됨
NULL 값은 연산에서 제외 

 

1. 대표적인 그룹 함수 

함수명  설명  사용 가능 데이터형 NULL 처리
`COUNT` 행의 수 세기 문자, 숫자, 날짜 제외 가능
`SUM` 합계 숫자만 제외
`AVG` 평균 숫자만 제외
`MIN` 최소값 숫자, 날짜, 문자 제외
`MAX` 최대값 숫자, 날짜, 문자 제외
`VARIANCE` 분산 숫자만 제외
`STDDEV` 표준편차 숫자만 제외

✅ 주의: 각 그룹 함수는 하나의 컬럼만 인자로 받는다

 

2. 집계 함수 예시

SELECT COUNT(*)       -- 전체 행 수
SELECT COUNT(COLUMN)  -- NULL 제외한 행 수
SELECT SUM(PRICE)
SELECT AVG(SCORE)
SELECT MIN(DATE)
SELECT MAX(NAME)

🚀 코드 SQL

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT;

🖥 실행 결과

출력
MAX_PRICE
85000

 


🔄 (추가 정보)그룹핑 함수

1. `GROUPING SETS`

  • 개별 컬럼 기준의 그룹 결과 합집합 출력
SELECT DEPT, JOB, SUM(SAL)
FROM EMP
GROUP BY GROUPING SETS(DEPT, JOB, ());
  • ()은 전체 집계(총합)

 

2. `ROLLUP`

  • 상위 → 하위 → 전체 요약까지 계층적으로 집계
SELECT DEPT, JOB, SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPT, JOB);
  • 순서 중요! (`DEPT` > `JOB`)

3. `CUBE`

  • 모든 가능한 그룹 조합 + 전체 총합 출력
SELECT DEPT, JOB, SUM(SAL)
FROM EMP
GROUP BY CUBE(DEPT, JOB);
  • 순서 중요하지 않음

✅ GROUPING SETS(DEPT, JOB, (DEPT, JOB), ()) ≡ CUBE(DEPT, JOB)


📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest

 

 

 

728x90
반응형
LIST