pbj0812의 코딩 일기

[SQL] FIRST_VALUE 를 활용한 가격이 가장 낮은 것의 아이디 구하기 본문

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;

2. 참고

 - 제6절 윈도우 함수(WINDOW FUNCTION)

 - #47 .SQL함수(분석용함수, last_value, first_value)

Comments