すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:GROUP BY 句

最終更新日:Aug 26, 2024

The GROUP BY句一緒に使用される集約機能グループに分析結果いずれかに基づい以上列あなたがあります。 The GROUP BY句ROLLUPと一緒に使用することができ、CUBE、とGROUPING SETS生成する複数のグループ化セット。

構文

  • GROUP BY

    GROUP BY句は、指定した1つ以上の列に基づいて分析結果をグループ化します。

    SELECT 
     key,
      ...
     aggregate function 
     GROUP BY 
     key,...
  • ROLLUPによるグループ

    GROUP BY ROLLUP句は、ロールアップ操作に基づいて分析結果をグループ化します。 この句は、各グループの小計とすべてのグループの総合計を返します。 たとえば、GROUP BY ROLLUP (a, b) を使用すると、(a, b) 、(a, null) 、および (null, null) のグループ化セットが生成されます。

    SELECT
    key,
     ...
    aggregate function 
    GROUP BY ROLLUP (key,...)
  • GROUP BY CUBE

    GROUP BY CUBE句は、可能なすべての列の組み合わせに基づいて分析結果をグループ化します。 For例、使用する場合GROUP BY CUBE (a、b) 、次のグループ化セットは生産: (a、b) 、(ヌル、b) 、(、ヌル) 、と (ヌル、ヌル) 。

    SELECT 
    key,
    ...
    aggregate function 
    GROUP BY CUBE (key,...)
  • GROUP BY GROUPING SETS

    The GROUP BY GROUPING SETS句グループ分析結果ベースの列にあなたに指定し。 たとえば、GROUP BY GROUPING SETS (a, b) を使用すると、(a, null) および (null, b) のグループ化セットが生成されます。

    SELECT 
    key, 
    ... 
    aggregate function 
    GROUP BY GROUPING SETS (key,...)
重要

分析ステートメントでGROUP BY句を使用する場合、システムは、SELECTステートメントを実行するときに、GROUP BY句に含まれる列のみを照会したり、任意の列に対して集計を実行したりできます。 たとえば、request_time列がGROUP BY句に含まれていないため、* | SELECT status, request_time, COUNT(*) AS PV GROUP BY statusは無効です。 Youステートメント * | SELECT状態に変更することができ、任意の (request_time) 、カウント (*) AS PV GROUP BY状態、が有効です。

パラメーター

項目

説明

キー

The名ログのフィールドまたは名前の列によって返さその値は集約機能。 GROUP BY句は、指定したログフィールドまたは列に基づいて結果をグループ化します。

GROUP BY句を使用すると、1つ以上の列を指定できます。

集約機能

The集約機能と一緒に使用されているGROUP BY句。 GROUP BY句は、min、max、avg、sum、countなどの集計関数と一緒に使用されることがよくあります。 詳細については、「集計関数」をご参照ください。

例 1

ステータスコードに基づいてページビュー (PV) の数をグループ化します。

  • クエリ文

    * | SELECT status, count(*) AS PV GROUP BY status
  • クエリおよび分析の結果グループによって

例 2

1時間間隔に基づいてPVの数をグループ化します。 次のステートメントでは、__time__ フィールドはLog Serviceの予約済みフィールドです。 このフィールドは時間列を示します。 timeは、date_trunc('hour', __time__) のエイリアスです。 date_trunc関数の詳細については、「date_trunc関数」をご参照ください。

  • クエリ文

    * |
    SELECT
      count(*) AS PV,
      date_trunc('hour', __time__) AS time
    GROUP BY
      time
    ORDER BY
      time
    LIMIT
      1000                       
  • クエリおよび分析の結果グループによって

例 3

PVの数を5分間隔でグループ化します。

  • クエリ文

    date_trunc関数を使用すると、固定間隔のみに基づいて統計を測定できます。 間隔は、関数で指定する時間単位によって決まります。 カスタム間隔に基づいて統計を測定する場合は、数学的なモジュロ演算を実行してデータをグループ化することをお勧めします。 次のステートメントでは、% 300は、5分間隔でデータをグループ化するために数学的なモジュロ演算を実行することを指定します。

    * |
    SELECT
      count(*) AS PV,
      __time__-__time__ % 300 AS time
    GROUP BY
      time
    LIMIT
      1000
  • クエリおよび分析の結果グループによって

例 4

request_method列とstatus列に基づいてPVの数をグループ化します。 GROUP BY GROUPING SETS句は、最初にリクエストメソッドごとにPVの数を計算し、次にステータスごとにPVの数を計算します。

  • クエリ文

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
      GROUPING SETS (request_method, status)
  • クエリおよび分析の結果GROUPING SETS

例 5

request_method列とstatus列に基づいてPVの数をグループ化します。 次のグループ化セットが生成されます。(null, null) 、(request_method, null) 、(null, status) 、および (request_method, status) 。 GROUP BY CUBE句は、各グループのPVの数を計算します。

  • クエリ文

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     CUBE (request_method, status)
  • クエリおよび分析の結果CUBE

例6

request_method列とstatus列に基づいてPVの数をグループ化します。 以下のグループ化セットが生成される: (request_method, status) 、(request_method, null) 、および (null, null) 。 GROUP BY ROLLUP句は、各グループのPVの数を計算します。

  • クエリ文

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     ROLLUP (request_method, status)
  • クエリおよび分析の結果ROLLUP