본문 바로가기

개발자 강화/코딩 테스트

[SQL] 프로그래머스 SUM,MAX,MIN - MySQL

푼 걸 기록하는 용도가 강해서... 도움이 되실지는 모르겠지만

정리해보겠습니다

제가 풀다가 틀려서 다른 블로그 참고한 부분도 있어욥

 

 

가장 비싼 상품 구하기

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

 

가격이 제일 비싼 식품의 정보 출력하기

 

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

 

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT;

이 쿼리는 MAX(PRICE)를 FOOD_PRODUCT 테이블의 전체에서 단일 값으로 반환하려고 하지만, GROUP BY 절이 없기 때문에 SQL 구문에서 오류가 발생합니다. SQL에서는 MAX 함수와 함께 다른 열을 GROUP BY 없이 사용할 수 없습니다.

>> 그렇다고 하네요... WHERE 문을 써야 한다고 함

 

물고기 종류 별 대어 찾기

SELECT F.ID, N.FISH_NAME, F.LENGTH
FROM FISH_INFO AS F
JOIN FISH_NAME_INFO AS N ON F.FISH_TYPE = N.FISH_TYPE
WHERE (F.FISH_TYPE, F.LENGTH) IN (SELECT FISH_TYPE, MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE)
ORDER BY F.ID;

 

이거 JOIN 할 때 ON 안쓰면 오류남(SQL 초보;) ON은 조인 조건 지정하는 부분임

WHERE 문 쓸 때도 그냥 MAX(LENGTH)해서 위에 처럼 찾으려고 했는데

이건 두 테이블을 조인하는 문제라서 FISH_TYPE이랑 같이 찾아줘야 되더라