가격이 제일 비싼 식품의 정보 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131115
- 문제 풀이
1
2
3
4
5
-- FOOD_PRODUCT 테이블에서 PRICE가 가장 높은 행을 선택한다.
-- 바깥 쿼리에서는 FOOD_PRODUCT 테이블에서 가격이 가장 높은 제품을 선택한다.
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
1
2
3
4
5
6
7
8
-- ROWNUM을 사용하여 정렬된 결과 중 첫 번째 행을 선택
-- FOOD_PRODUCT 테이블에서 PRICE 기준으로 내림차순으로 정렬한 후, 가장 높은 가격을 가진 행 하나만을 선택한다.
SELECT PRODUCT_ID,PRODUCT_NAME,PRODUCT_CD,CATEGORY,PRICE
FROM (SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
)
WHERE ROWNUM=1;
1
2
3
4
5
-- FETCH FIRST n ROWS ONLY를 사용하여 PRICE 열을 기준으로 내림차순 정렬하고, 결과에서 첫 번째 행만 가져온다.
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
FETCH FIRST ROWS ONLY;
ROWNUM
은 Oracle 데이터베이스에서 사용되는 가상 열(Virtual Column) 중 하나로, 행이 결과 집합에 반환되는 순서를 나타낸다. 일반적으로ORDER BY
절을 사용하여 결과를 정렬한 다음,ROWNUM
을 활용하여 특정 순서의 행을 선택할 때 주로 사용된다.ROWNUM
은 행이 결과 집합에 반환되는 순서를 기준으로 1부터 시작한다.ROWNUM
은 쿼리의 결과가 정렬된 순서대로 부여되며, 특정 순서로 행을 선택하려면ORDER BY
절이 필요하다.ROWNUM
을 사용하는 경우, 서브쿼리를 사용하여 먼저 정렬된 결과에 대해ROWNUM
을 부여하고, 그 후에 외부 쿼리에서 해당 결과를 사용하는 패턴이 일반적이다.
1 2 3 4 5 6 7
SELECT * FROM ( SELECT * FROM your_table ORDER BY some_column ) WHERE ROWNUM <= 10;
- 위의 예제에서는
some_column
을 기준으로 정렬된 결과 중에서 처음 10개의 행을 선택한다.
FETCH FIRST n ROWS ONLY
는 SQL에서 결과 집합에서 특정 개수의 행만을 반환하도록 지정하는 구문이다. 이 구문은 주로 정렬된 결과에서 가장 상위의 행을 선택할 때 사용된다. 주로 Oracle, DB2, PostgreSQL, SQL Server 등에서 사용된다.1 2 3
SELECT * FROM table_name ORDER BY column_name [ASC | DESC] FETCH FIRST n ROWS ONLY;
FETCH FIRST n ROWS ONLY
: 결과에서 반환할 행의 수를 지정한다.n
은 반환하려는 행의 개수이다.
1 2 3 4
-- 가격이 높은 상위 3개의 식품을 조회하는 Oracle 쿼리 SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC FETCH FIRST 3 ROWS ONLY;
- 이렇게 하면
FOOD_PRODUCT
테이블에서PRICE
열을 기준으로 내림차순 정렬하여 상위 3개의 행만을 반환한다.
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.