티스토리 뷰
SQL Server 2012 T-SQL New Feature – FIRST_VALUE, LAST_VALUE
SQL Server 2012에서 새롭게 제공되는 분석 함수 중에서 LAG, LEAD에 대한 내용을 살펴보았는데 이번에는 정렬된 값 집합의 첫번째 값과 마지막 값을 반환하는 함수를 알아보겠습니다.
FIRST_VALUE, LAST_VALUE 함수를 사용하면 어떤 시나리오에서는 손쉽게 원하는 결과를 구할 수 있을 것 같습니다.
먼저 FIRST_VALUE의 구문은 아래와 같습니다.
FIRST_VALUE ( [scalar_expression )
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
간단한 예를 보는 것이 이해하기 훨씬 나을 듯 합니다. 아래 쿼리의 결과를 보시면 제품이름과 카테고리, 가격이 나타납니다.
SELECT Name, [ProductSubcategoryID], [ListPrice]
FROM [Production].[Product]
WHERE [ProductSubcategoryID] IS NOT NULL
ORDER BY [ProductSubcategoryID], [ListPrice]
추가로 위의 결과에 가장 낮은 가격과 가장 높은 가격을 나타내려면 서브 쿼리로 MAX, MIN을 사용할 수 있을 것입니다. 정렬된 결과 집합에 대한 최소가격의 경우 쿼리가 조인되고 필터 조건이 복잡하다면 쿼리 문이 복잡해지게 됩니다. FIRST_VALUE를 이용해서 가장 낮은 가격을 구하는 내용을 추가해보도록 하겠습니다.
SELECT Name, [ProductSubcategoryID], [ListPrice]
, FIRST_VALUE( [ListPrice]) OVER (ORDER BY ListPrice ASC)
FROM [Production].[Product]
WHERE [ProductSubcategoryID] IS NOT NULL
ORDER BY [ProductSubcategoryID], [ListPrice]
FIRST_VALUE 구문에서도 보는 것처럼 FIRST_VALUE 다음에 나타낼 값에 대한 열을 사용하고 OVER 구문에서 ORDER BY, PARTITION BY 를 사용할 수 있습니다. 아래는 카테고리별 분할된 내용에 대한 최소 가격과 최대 가격을 나타내는 구문입니다.
SELECT Name, [ProductSubcategoryID],[ListPrice]
, FIRST_VALUE( [ListPrice]) OVER (PARTITION BY [ProductSubcategoryID] ORDER BY [ProductSubcategoryID] ) AS FirstValue
, LAST_VALUE( [ListPrice]) OVER (PARTITION BY [ProductSubcategoryID] ORDER BY [ProductSubcategoryID] ) AS LastValue
FROM [Production].[Product]
WHERE [ProductSubcategoryID] IS NOT NULL
ORDER BY [ProductSubcategoryID], [ListPrice]
간략히 분석 함수 중에서 FIRST_VALUE, LAST_VALUE를 살펴보았습니다. 서브 쿼리로도 해결 가능하겠지만 특정 시나리오에서는 FIRST_VALUE, LAST_VALUE를 통해 간결하고 손쉽게 해결할 수 있습니다. 보다 더 자세한 내용은 아래 링크를 참고하실 수 있습니다.
l FIRST_VALUE(Transact-SQL)
http://msdn.microsoft.com/ko-kr/library/hh213018
l LAST_VALUE(Transact-SQL)
http://msdn.microsoft.com/ko-kr/library/hh231517
'SQL' 카테고리의 다른 글
SQL Server 2012 T-SQL New Feature – ANY, SOME, ALL (0) | 2012.07.11 |
---|---|
SQL Server 2012 코드 편집기 새 기능 (0) | 2012.05.23 |
SQL Server 2012의 FileTable (0) | 2012.05.09 |
SQL Server Build number List (0) | 2012.05.04 |
SQL Server 2012 T-SQL New Feature –THROW (0) | 2012.05.02 |
- Total
- Today
- Yesterday
- Power BI Desktop 업데이트
- Power BI Copilot
- sharepoint
- Microsoft Fabric
- 목표
- redJu
- SharePoint 2013
- Power BI Desktop Update
- 정홍주
- 클라우드
- Cloud
- Visual Studio 2010
- 업데이트
- Power BI Desktop
- copilot
- Windows Azure Mobile Services
- SQL Azure
- SharePoint 2010
- Windows Phone 7
- 페이지를 매긴 보고서
- Windows Azure
- Power BI 업데이트
- SharePoint Object Model
- Windows Azure 업데이트
- Paginated Report
- Power BI
- sql server 2012
- Power BI Update
- SharePoint Online
- hongju
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |