ComputerLanguage_Program/SQL
[SQL] FIRST_VALUE 를 활용한 가격이 가장 낮은 것의 아이디 구하기
pbj0812
2021. 7. 8. 01:14
0. 목표
- FIRST_VALUE 를 활용한 가격이 가장 낮은 것의 아이디 구하기
1. 실습
1) 테이블 생성
CREATE TABLE sql_test.last_value_test
(
id int,
price int
);
2) 데이터 삽입
INSERT INTO sql_test.last_value_test(id, price) VALUES(1, 10);
INSERT INTO sql_test.last_value_test(id, price) VALUES(2, 9);
INSERT INTO sql_test.last_value_test(id, price) VALUES(3, 73);
INSERT INTO sql_test.last_value_test(id, price) VALUES(4, 23);
INSERT INTO sql_test.last_value_test(id, price) VALUES(5, 22);
INSERT INTO sql_test.last_value_test(id, price) VALUES(6, 5);
INSERT INTO sql_test.last_value_test(id, price) VALUES(7, 1);
INSERT INTO sql_test.last_value_test(id, price) VALUES(8, 4);
INSERT INTO sql_test.last_value_test(id, price) VALUES(9, 2);
INSERT INTO sql_test.last_value_test(id, price) VALUES(10, 7);
3) FIRST_VALUE 를 이용한 가격이 가장 높은 것의 id 추출
- partition 을 제외하여 전체를 대상으로 비교
SELECT FIRST_VALUE(id) OVER(ORDER BY price DESC) AS A FROM sql_test.last_value_test;
4) DISTINCT 를 이용하여 중복 제거
SELECT DISTINCT FIRST_VALUE(id) OVER(ORDER BY price DESC) AS A FROM sql_test.last_value_test;
5) 정렬 순서를 바꿔서 가격이 가장 낮은 것의 id 추출
SELECT DISTINCT FIRST_VALUE(id) OVER(ORDER BY price ASC) AS A FROM sql_test.last_value_test;