GROUP BY 節

1 つ以上の列を使用してデータを集約するには、GROUP BY 節を使用します。 有意義な集約結果を提供するために、データ集約は通常、他の列の集約関数と結合されます。

GROUP BY 節の例

以下の照会の例は、特定の時間におけるすべてのフロー内で 100 万バイトを超えるデータを送信した IP アドレスを示しています。

SELECT sourceIP, SUM(sourceBytes) 
FROM flows where sourceBytes > 1000000 
GROUP BY sourceIP

結果は以下の出力と同様になります。

-----------------------------------
| sourceIP | SUM_sourceBytes |
-----------------------------------
| 192.0.2.0 | 4282590.0 |
| 10.105.2.10 | 4902509.0 |
| 10.103.70.243 | 2802715.0 |
| 10.103.77.143 | 3313370.0 |
| 10.105.32.29 | 2467183.0 |
| 10.105.96.148 | 8325356.0 |
| 10.103.73.206 | 1629768.0 |
-----------------------------------

ただし、この情報を非集約照会と比較した場合、以下の出力に示すように、すべての IP アドレスは一意的に表示されます。

------------------------------
| sourceIP | sourceBytes |
------------------------------
| 192.0.2.0 | 1448629 |
| 10.105.2.10 | 2412426 |
| 10.103.70.243 | 1793095 |
| 10.103.77.143 | 1449148 |
| 10.105.32.29 | 1097523 |
| 10.105.96.148 | 4096834 |
| 192.0.2.0 | 2833961 |
| 10.105.2.10 | 2490083 |
| 10.103.73.206 | 1629768 |
| 10.103.70.243 | 1009620 |
| 10.105.32.29 | 1369660 |
| 10.103.77.143 | 1864222 |
| 10.105.96.148 | 4228522 |
------------------------------

最大イベント数を表示するには、以下の構文を使用します。

SELECT MAX(eventCount) FROM events

送信元 IP からの平均イベント数を表示するには、以下の構文を使用します。
SELECT AVG(eventCount), PROTOCOLNAME(protocolid) 
FROM events 
GROUP BY sourceIP

出力に、以下の結果が表示されます。

---------------------------------
| sourceIP | protocol |
---------------------------------
| 192.0.2.0 | TCP.tcp.ip |
| 10.105.2.10 | UDP.udp.ip |
| 10.103.70.243 | UDP.udp.ip |
| 10.103.77.143 | UDP.udp.ip |
| 10.105.32.29 | TCP.tcp.ip |
| 10.105.96.148 | TCP.tcp.ip |
| 192.0.2.0 | TCP.tcp.ip |
| 10.105.2.10 | ICMP.icmp.ip |
---------------------------------