반응형
/*SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) as PRICE
FROM FOOD_PRODUCT*/
--1번째 답
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE desc
l
--2번째 답
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 의미
문제
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성
2가지의 답으로 해결 해보았다.
첫번째 답은 가격을 큰순으로 정렬한 후 limit로 첫번째 값을 뽑아 낸 것이다. 가장 간편하게 해결 할 수 있지만 뭔가 찜찜한 답이다.
두번째 답은 서브쿼리를 이용해서 작성한 답인데 FOOD_PRODUCT에서 MAX() 값을 뽑은 후 조건절에서 해당 값과 일치하는 값을 비교하여 추출한 값이다. 이답이 가장 정확한 답이라 볼 수 있다. 임의로 서브쿼리를 사용하여 특정값을 뽑아낸 후 기존 값의 필터로 사용하면 꽤 유용한것 같다.
그리고 맨위에 다른 답을 써 두었는데 해당답은 오답이다. 착각 할 수있지만 MAX만 해서 저렇게 계산할 경우 MAX 컬럼은 다른 컬럼과 연동 되는게 아니라 혼자 MAX값 자체만을 추출하여 다른 컬럼과 일치하지 않은 행을 뽑아온다
만약 MAX값을 가진 행이 8번째 행이라면 1행/1행/1행/1행/8행 을 가져오게 되는 것 이다.
반응형
'SQL > MY SQL 문제 풀이(프로그래머스)' 카테고리의 다른 글
[MYSQL] PROGRAMMERS_중성화 여부 파악하기 (0) | 2024.02.21 |
---|---|
[MYSQL] PROGRAMMERS_카테고리 별 상품 개수 구하기 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_DATETIME에서 DATE로 형 변환 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_NULL 처리하기 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_이름에 el이 들어가는 동물 찾기 (0) | 2024.02.21 |