SET_UNIONS集計関数は、1つの複数割当て属性を取得し、その属性からすべての値の共用体であるセットを構成します。
SET_UNIONS関数の構文は次のとおりです。
SET_UNIONS(<multi-assign_attribute>)
ここで、属性のデータ型は、セット・データ型にする必要があります(複数割当て文字列属性の場合は
mdex:string-setなど)。
この関数は、SELECT句でのみ使用できます。
SET_UNIONSの例
この例では、Bodyは複数割当ての文字列属性です。
RETURN results AS
SELECT SET_UNIONS(Body) AS bodyUnion
FROM WineState
GROUP BY WineType
ORDER BY WineType
この文の結果は次のようになります。
WineType bodyUnion
-------------------------------------------
| Bordeaux | { Silky, Tannins } |
| Brut | { Robust } |
| Chardonnay | { } |
| Merlot | { Fruity } |
| Pinot Noir | { Supple } |
| Red | { Robust, Silky, Tannins } |
| White | { Firm, Fresh, Robust } |
| Zinfandel | { Robust, Tannins } |
-------------------------------------------
セットは次のようにして導出されます。
- Bordeaux: 3つのレコードに割り当てられており、各レコードに"Silky"と"Tannins"の2つのBodyが割り当てられています。このため、共用体は2つの割当てを持つ2要素のセットを返します。
- Brut: 2つのレコードに割り当てられており、各レコードに"Robust"のBodyが割り当てられています。このため、共用体は"Robust"を持つ1要素のセットを返します。
- Chardonnay: 2つのレコードに割り当てられていますが、いずれのレコードにもBodyは割り当てられていません。このため、共用体は空です。
- Merlot: 2つのレコードに割り当てられており、1つのレコードには"Fruity"のBodyが割り当てられていますが、もう1つのレコードにはBodyは割り当てられていません。このため、その1つのレコードには単一割当てを持つ1つの共用体が存在します。
- Pinot Noir: 1つのレコードのみに割り当てられており、"Supple"のBodyが割り当てられています。このため、そのレコードには1つの共用体が存在します。
- Red: 8つのレコードに割り当てられており、6つのレコードには"Silky"と"Tannins"の2つのBodyが、1つのレコードには"Robust"と"Tannins"の2つのBodyが、最後のレコードには"Robust"のBodyが割り当てられています。このため、結果の共用体は、3つの別個の割当てを持つ3要素のセットを生成します。
- White: 4つのレコードに割り当てられており、最初のレコードには"Fresh"と"Robust"の2つのBodyが、2番目のレコードには"Firm"と"Robust"の2つのBodyが割り当てられていますが、3番目と4番目のレコードにはBodyは割り当てられていません。このため、"Firm"、"Fresh"および"Robust"割当てを持つ1つの共用体が存在します。
- Zinfandel: 1つのレコードのみに割り当てられており、そのレコードに"Robust"と"Tannins"の2つのBodyが割り当てられています。このため、そのレコードには1つの共用体が存在します。