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