EQLでは、セットごとのグループ化がサポートされます。
GROUP BYの使用
GROUP BY句の通常のグループ化構文では、EQLのグループは等価を設定してグループ化します(つまり、これらのセットが等しい行は同じグループに配置されます)。
RETURN results AS SELECT SET(WineID) AS IDs FROM WineState GROUP BY Body
Body IDs
------------------------------------------------------------
| | { 1, 17, 2, 20, 21 } |
| { Fresh, Robust } | { 19 } |
| { Supple } | { 14, 15 } |
| { Silky, Tannins } | { 10, 12, 13, 16, 18, 3, 5, 7, 9 } |
| { Firm, Robust } | { 22, 25 } |
| { Robust } | { 23, 24, 6, 8 } |
| { Robust, Tannins } | { 11, 4 } |
------------------------------------------------------------
GROUP BYを使用すると、EQLではグループ・キーが空またはNULL値である行が保存されることに注意してください。 したがって、レコード1、2、17、20および21は、本文の割当てがない場合でも返されます(これらのレコードに空のセットが返されるため)。
GROUP BY句の詳細は、「GROUP/GROUP BY句」を参照してください。
GROUP BY MEMBERSの使用
GROUP BYのMEMBERS拡張機能では、セットのメンバーごとにグループ化できます。 MEMBERSの使用方法を説明するために、前述の例を次のように書き直すことができます:
RETURN results AS SELECT SET(WineID) AS IDs FROM WineState GROUP BY MEMBERS(Body) AS BodyType
BodyType IDs
-------------------------------------------------------
| Supple | { 14, 15 } |
| Firm | { 22, 25 } |
| Fresh | { 19 } |
| Robust | { 11, 19, 22, 23, 24, 25, 4, 6, 8 } |
| Tannins | { 10, 11, 12, 13, 16, 18, 3, 4, 5, 7, 9 } |
| Silky | { 10, 12, 13, 16, 18, 3, 5, 7, 9 } |
| | { 1, 17, 2, 20, 21 } |
-------------------------------------------------------
前述の例と同様に、レコード1、2、17、20および21が返されます。
MEMBERSの詳細は、「MEMBERS拡張」で入手できます。