금일 프로그래머스 내 SQL문제를 풀다가 다양한 풀이가 가능하고,
처음 작성해보는 SQL문이 있어 기록해본다.
문제 : FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.

1. 오답
SELECT PRODUCT_ID,
PRODUCT_NAME,
PRODUCT_CD,
CATEGORY,
MAX(PRICE) PRICE
FROM FOOD_PRODUCT
LIMIT 1
첫번째로 작성한 SQL문이고, 오답이다. 틀린 이유를 하단에 설명하자면
PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY 는 첫번째 행의 동일한 값이 출력되어지나,
MAX(PRICE)는 최대값인 가격만 별도로 출력되는 경우가 발생한다.
2. 정답(1)
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1
고민 끝에 두번째로 작성해 본 코드는 다음과 같다.
문제와 테이블 구조를 함께 비교해보면,
모든 컬럼을 조회하면 되는 문제이기 때문에 SELECT절에 간단히 *를 활용할 수 있다.
그리고 가격을 내림차순으로 정렬 시 첫번째 행이 가장 가격이 높은 상품에 대한 컬럼들이 조회될거고,
LIMIT절을 활용하면 되지 않을까 싶어 다음과 같이 조회한 결과 정답이었다.
그리고 늘상 확인해보는 다른 사람들의 풀이를 보니 전혀 다른 풀이가 있었고,
해당 풀이에 대해 들어보지 못한 나는 구글에 서치, 서치 .. 해 보았다!
3. 정답(2)
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
이전 WHERE 절에 SELECT문을 사용해본 적이 없기에
활용 예시들과 활용할 수 있는 조건 등을 살펴보았고,
SELECT문의 결과가 하나의 컬럼이면 WHERE절 내 SELECT 문을 사용 할 수 있으며,
IN연산자가 아니고 관계연산자인 경우 결과가 하나의 행이어야만 사용이 가능하단다.