-
<프로그래머스> 가격이 제일 비싼 식품의 정보 출력하기코딩테스트/SQL 코딩테스트 2023. 12. 13. 16:31
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131115
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 ID, 이름, 코드, 분류, 가격을 조회
가격이 제일 높은 것 1개를 조회하는 구문인데 MAX()를 사용해도 구현할 수 있지만
ORDER BY한 상태에서 상위 n개를 조회하는 방식의 구문으로 조회하였다.
Oracle은 ROWNUM을 이용, MySQL은 LIMIT구문을 이용하였다.
1) Oracle
SELECT * FROM ( SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC ) WHERE ROWNUM = 1;
조회하는 칼럼이 해당 테이블의 존재하는 모든 칼럼이기 때문에 SELECT *
그리고 ORDER BY PRICE DESC로 가격이 높은 순서대로 정렬해준 상태에서 ROWNUM이 1인 행을 조회하면
가장 가격이 높은 행 1개만 출력이 된다
여기서 서브쿼리로 작성한 이유는 WHERE 절의 실행이 ORDER BY보다 먼저 이뤄지기 때문에 서브쿼리 없이 그냥 실행하면 정렬되지 않은 상태에서 ROWNUM이 1인 행을 찾고 그 이후에 정렬을 수행하기 때문이다.
2) MySQL
SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1;
LIMIT n을 구문 마지막에 사용하면 위에서부터 n개의 행을 출력한다. 가격이 높은 순으로 정렬한 뒤에 상위 1개의 행을 출력하기 때문에 가격이 가장 높은 행이 출력된다.
- References
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 조건에 맞는 회원수 구하기 (0) 2023.12.13 <프로그래머스> 이름이 없는 동물의 아이디 (0) 2023.12.13 <프로그래머스> 흉부외과 또는 일반외과 의사 목록 출력하기 (0) 2023.12.13 <프로그래머스> DATETIME에서 DATE로 형 변환 (0) 2023.12.13 <프로그래머스> 강원도에 위치한 생산공장 목록 출력하기 (0) 2023.12.12 - 문제 요구사항