Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[문제 Question] #30

Open
taewook02 opened this issue Jul 17, 2023 · 2 comments
Open

[문제 Question] #30

taewook02 opened this issue Jul 17, 2023 · 2 comments

Comments

@taewook02
Copy link
Collaborator

Issue: ✅ 문제 Question
주차 별 문제 풀이 시에 고민했던 내용을 공유해주세요.

주차
week3

문제 이름 및 링크
식품분류별 가장 비싼 식품의 정보 조회하기

공유 내용

/* 틀린 풀이 */ 
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '', '김치', '식용유')
GROUP BY CATEGORY
ORDER BY PRICE DESC;

위 코드가 정답이 아닌 이유를 모르겠습니다.

@Hoya324
Copy link
Owner

Hoya324 commented Jul 18, 2023

/* 틀린 풀이 */ 
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '', '김치', '식용유')
GROUP BY CATEGORY
ORDER BY MAX_PRICE DESC
  • 틀린 이유:
  1. MAX(PRICE)를 바로 SELECT 할 경우 가장 높은 가격을 뽑기만 하고, 같은 행에 있는 값들은 관련이 없는 값이 SELECT 된다.
  2. 때문에 가장 큰 값을 식별할 수 있는 값으로 서브 쿼리를 통해 가져오고 그 값과 그 값에 해당하는 행의 CATEGORY, PRODUCT_NAME을 가져오도록 한다.
  • 아래 사진에서 확인할 수 있듯 전혀 다른 PRODUCT_ID를 가지게 된다는게 문제이다.
스크린샷 2023-07-18 오후 1 09 27 스크린샷 2023-07-18 오후 1 10 24
/* 정답은 맞지만 잘못된 풀이 */
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '', '김치', '식용유') AND
    PRICE IN (SELECT MAX(PRICE)
    FROM FOOD_PRODUCT
    GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC
  • 잘못된 이유
  1. 가장 높은 가격의 PRICE를 식별 값으로 사용했을 때 만약 다른 CATEGORY의 값 중 같은 값이 있다면 문제가 생길 수 있다.
  2. 이를 방지하기 위해 서브쿼리에서 CATEGORY를 함께 SELECT 해주었다.
스크린샷 2023-07-18 오후 1 12 04
/* 옳은 풀이 */
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '', '김치', '식용유') AND
    (CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE)
    FROM FOOD_PRODUCT
    GROUP BY CATEGORY)
ORDER BY MAX_PRICE DESC

이해 안 되는 부분이 있으면 말해주시고, 아니면 해당 파일 수정해주세요!

@taewook02
Copy link
Collaborator Author

👍👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants