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

構文

  • GROUP BY

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

    SELECT 
     キー、
      ...
     集計関数 
     GROUP BY 
     キー、...
  • ROLLUPによるグループ

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

    選択
    キー、
     ...
    集約機能
    GROUP BY ROLLUP (キー、...)
  • GROUP BY CUBE

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

    選択
    キー、...
    集計関数
    CUBEによるグループ (キー、...)
  • GROUP BY GROUPING SETS

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

    選択
    キー、...
    集計関数
    GROUP BY GROUPING SETS (キー、...)
重要 分析ステートメントで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ステータス、カウント (*) AS PV GROUP BYステータス
  • クエリおよび分析の結果グループによって

例 2

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

  • クエリ文
    * |
    選択
      カウント (*) PVとして、
      date_trunc('hour', __time__) AS time
    グループ化
      時間
    注文によって
      時間
    リミット
      1000                       
  • クエリおよび分析の結果グループによって

例 3

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

  • クエリ文

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

    * |
    選択
      カウント (*) PVとして、
      __time__-__time__ % 300 AS time
    グループ化
      時間
    リミット
      1000
  • クエリおよび分析の結果グループによって

例 4

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

  • クエリ文
    * |
    選択
      request_method,
      ステータス、
      カウント (*) としてPV
    グループ化
      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の数を計算します。

  • クエリ文
    * |
    選択
      request_method、
      ステータス、
      カウント (*) としてPV
    グループ化
     CUBE (request_method、ステータス)
  • クエリおよび分析の結果CUBE

例6

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

  • クエリ文
    * |
    選択
      request_method、
      ステータス、
      カウント (*) としてPV
    グループ化
     ROLLUP (request_method、ステータス)
  • クエリおよび分析の結果ROLLUP