ORDER IN GROUP 절
ORDER IN GROUP 절은 그룹 내 결과 집합을 반환하는 GROUP ON 문과 함께 사용됩니다. ORDER IN GROUP 절을 사용하면 반환된 각 그룹을 다른 방식으로 정렬할 수 있습니다. 예를 들어 System.Kind에서 그룹화하면 System.Document.LastAuthor, System.Music.AlbumArtist별 모든 음악 파일 및 System.Message.FromName을 기준으로 모든 전자 메일을 기준으로 모든 문서를 정렬할 수 있습니다.
Syntax
다음은 ORDER IN GROUP 절의 구문입니다.
GROUP ON <group column and optional ranges>
OVER (SELECT ... FROM SystemIndex
ORDER
IN GROUP '<group name>' BY <column> [<direction>] [,<column> [<direction>]]
[IN GROUP '<group name>' BY <column> [<direction>] [,<column> [<direction>]] ]
[BY <column> [<direction>] [,<column> [<direction>]] ])
그룹 이름 지정자는 GROUP ON 문에 지정된 대로 그룹 열의 범위 또는 알려진 값입니다. 예를 들어 System.Photo.ISOSpeed의 알려진 값에는 'ISO-100', 'ISO-200' 등이 포함됩니다. System.Photo.DateTaken의 범위에는 GROUP ON System.ItemDate ['2006-1-1', '2007-1-1']과 같은 문의 '2006-1-1' 및 '2007-1-1'이 포함됩니다.
열 지정자는 GROUP ON 또는 SELECT 문에 지정된 유효한 열이어야 합니다. 둘 이상의 열을 쉼표로 구분하여 포함할 수 있습니다. 예를 들어 System.Photo.ISOSpeed에서 그룹화하면 모든 ISO-100 사진을 System.Photo.ShutterSpeed로 정렬한 다음 System.Photo.Aperture별로 정렬할 수 있습니다.
선택적 방향 지정자는 오름차순(낮음에서 높음)의 경우 ASC이거나 내림차순(높음에서 낮음)의 경우 DESC일 수 있습니다. 방향 지정자를 제공하지 않으면 기본값인 오름차순이 사용됩니다. 둘 이상의 열을 지정하지만 모든 방향을 지정하지 않으면 방향을 명시적으로 변경할 때까지 마지막으로 지정한 방향이 각 연속 열에 적용됩니다.
ORDER GROUP IN 절에 명시적으로 지정되지 않은 범위 또는 값은 GROUP ON 열의 값을 기준으로 오름차순으로 정렬됩니다.
예제
다음 예제에서는 System.Kind 속성으로 결과를 그룹화합니다. 쿼리는 애플리케이션 이름으로 'program' 그룹을 정렬하고 앨범 제목 및 트랙 번호별로 'music' 그룹을 정렬합니다. NULL 그룹은 항목 이름으로 정렬됩니다. 다른 모든 그룹은 항목 날짜별로 정렬됩니다.
GROUP ON System.Kind
OVER (SELECT System.ItemUrl, System.Music.AlbumTitle, System.Music.TrackNumber, System.ItemName, System.ItemDate, System.Kind FROM SystemIndex
ORDER
IN GROUP 'program' BY System.ApplicationName ASC
IN GROUP 'music' BY System.Music.AlbumTitle ASC, System.Music.TrackNumber ASC
IN GROUP NULL BY System.ItemName
BY System.ItemDate DESC)
다음 예제에서는 System.ItemDate 속성으로 결과를 그룹화한 다음 각 그룹을 항목 URL, 종류 또는 이름으로 정렬합니다.
GROUP ON System.ItemDate ['2006-1-1', '2007-1-1', '2008-1-1']
OVER (SELECT System.ItemUrl, System.ItemName, System.ItemDate System.Kind FROM SystemIndex
ORDER
IN GROUP MINVALUE BY System.ItemUrl ASC
IN GROUP '2007-1-1' BY System.Kind
IN GROUP NULL BY System.ItemName)
이전 쿼리의 결과는 5개의 그룹으로 반환되고 다음 표에 설명된 대로 정렬됩니다.
그룹 | 설명 | 정렬 기준 |
---|---|---|
Minvalue | 2006-1-1 이전 날짜가 있는 항목 | 항목의 URL을 기준으로 오름차순으로 정렬 |
2006-1-1 | 날짜가 2006-1-1 또는 2007-1-1 이전인 항목 | 항목 날짜를 기준으로 오름차순으로 정렬 |
2007-1-1 | 날짜가 2007-1-1 또는 2008-1-1 이전인 항목 | 종류 값별로 오름차순으로 정렬 |
2008-1-1 | 날짜가 2008-1-1 이상인 항목 | 항목 날짜를 기준으로 오름차순으로 정렬 |
NULL | System.ItemDate 열에 값이 없는 항목 | 항목 이름을 기준으로 오름차순으로 정렬 |
관련 항목