꿈은 데이터분석가, 취미는 계획

[MY SQL / 집계함수] 전체 데이터에서 가장 큰 값이 있는 행 찾기 본문

SQL/sql문풀

[MY SQL / 집계함수] 전체 데이터에서 가장 큰 값이 있는 행 찾기

data_2080 2024. 4. 4. 20:16
728x90

출처: [프로그래머스 스쿨 - 코딩테스트 연습 - MY SQL 문제] :  가격이 제일 비싼 식품의 정보 출력하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/131115


문제(일부):  테이블에서 가격이 제일 비싼 식품의 정보 모두 조회하기

 

1. 서브쿼리 활용하기

WHERE절에서 PRICE = MAX(PRICE)를 사용하면 오류 발생!
WHERE절은 각 행에 대해 개별적으로 조건을 평가, 집계 함수는 여러 행의 데이터를 요약하여 단일 결과를 생성하기 때문
=> WHERE절에서는 바로 집계함수를 적용할 수 x

SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

 

2. WITH절(임시 테이블) 생성하기

WITH절은 복잡한 쿼리를 작은부분으로 나눠서 해결하는데 도움을 줌
쿼리를 실행하는 동안만 존재하고 끝나면 사라지는 '임시'테이블
로 메모장 같은 존재 

 

반면에 유사한 기능을 하는 VIEW는 데이터베이스 안에 저장되어 있는 가상의 테이블
책갈피 처럼 저장해두었다가 필요할 때 다시 볼 수 있음

# WITH절에서 MAX(PRICE)를 구해서 활용

WITH A AS (
    SELECT MAX(PRICE) AS MAX_PRICE 
    FROM FOOD_PRODUCT
)

SELECT PRODUCT_ID
     , PRODUCT_NAME
     , PRODUCT_CD
     , CATEGORY
     , PRICE 
FROM FOOD_PRODUCT, A
WHERE PRICE = A.MAX_PRICE;

 

728x90