IT/[SQL] Basic
SQL에서의 FIRST_VALUE 함수 : 활용, 예제, 주의할 점
carpe08
2024. 4. 8. 15:59
320x100
SQL에서 FIRST_VALUE 함수는 데이터 집합 내에서 첫 번째 값을 반환하는 유용한 함수입니다. 이 함수는 특히 윈도우 함수나 ORDER BY 절과 함께 사용될 때 더욱 강력한 기능을 발휘합니다. 매출 데이터에서 첫 구매일을 찾거나, 센서 로그에서 최초 감지 값을 기준으로 변화량을 분석할 때 FIRST_VALUE 함수는 매우 강력한 도구가 됩니다.
FIRST_VALUE 함수 구문
FIRST_VALUE(expression) OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY order_expression [ASC | DESC]
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
- expression: 반환할 값입니다.
- PARTITION BY: 데이터를 파티션화하는 데 사용됩니다. (옵션)
- ORDER BY: 정렬 순서를 지정합니다.
- ROWS BETWEEN: 윈도우의 범위를 지정합니다.
- UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING은 전체 파티션 범위에서 첫 번째 값을 항상 참조하게 합니다.
FIRST_VALUE 함수의 활용 예시
1. 가장 빠른 날짜/시간 찾기
주문 데이터에서 가장 빠른 주문일을 찾을 때 유용합니다.
SELECT order_id, order_date,
FIRST_VALUE(order_date) OVER (ORDER BY order_date) AS first_order_date
FROM orders;
각 주문 행마다 전체 주문 중 가장 빠른 날짜가 함께 표시됩니다.
2. 각 그룹 내에서의 최초 값 찾기
카테고리별로 가장 첫 번째로 등장하는 제품을 찾을 수 있습니다.
SELECT product_id, category_id,
FIRST_VALUE(product_id) OVER (PARTITION BY category_id ORDER BY product_id) AS first_product_id
FROM products;
PARTITION BY를 사용하여 카테고리별로 나눈 뒤, 각 파티션의 첫 번째 product_id를 가져옵니다.
3. 데이터 간의 차이 계산
각 행의 값과 첫 번째 행의 값을 비교하여 차이를 계산할 수 있습니다.
SELECT timestamp, value,
value - FIRST_VALUE(value) OVER (ORDER BY timestamp) AS value_difference
FROM sensor_data;
센서 값이 시간에 따라 어떻게 변했는지 분석할 때 유용합니다.
예제: 학생 점수 데이터 분석
예제 데이터:
ID | Name | Score
---|---------|------
1 | Alice | 85
2 | Bob | 72
3 | Charlie | 90
4 | Dave | 68
각 학생의 점수에서 첫 번째 학생의 점수와의 차이를 계산합니다.
SELECT ID, Name, Score,
Score - FIRST_VALUE(Score) OVER (ORDER BY ID) AS Score_Difference
FROM Students;
결과:
ID | Name | Score | Score_Difference
---|---------|-------|------------------
1 | Alice | 85 | 0
2 | Bob | 72 | -13
3 | Charlie | 90 | 5
4 | Dave | 68 | -17
Alice의 점수는 첫 번째이므로 차이는 0, Bob은 -13, Charlie는 +5, Dave는 -17로 계산됩니다.
사용 시 유의할 점
- ORDER BY 절이 없으면 의미 있는 결과를 반환하지 않습니다. 반드시 정렬 기준을 명확히 지정해야 합니다.
- 데이터가 많은 경우, 윈도우 함수는 성능에 영향을 줄 수 있습니다. 인덱스를 활용하거나 서브쿼리로 최적화하는 방식을 고려해보세요.
이 글을 통해 SQL의 FIRST_VALUE 함수의 개념과 활용에 대해 이해하셨기를 바랍니다. FIRST_VALUE는 데이터 분석 및 리포팅 작업에서 매우 유용하며, 복잡한 쿼리를 보다 간결하고 효율적으로 작성할 수 있도록 도와줍니다.
실제 프로젝트에서 FIRST_VALUE를 어떻게 적용할 수 있을지 고민해보세요.
320x100
320x100