日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

GROUP BY子句

GROUP BY子句用于結合聚合函數,根據一個或多個列對分析結果進行分組。GROUP BY子句還支持搭配ROLLUP子句、CUBE子句和GROUPING SETS子句,擴展分組功能。

語法

GROUP BY

分析結果進行分組。

SELECT 
 key,
  ...
 aggregate function 
 GROUP BY 
 key,...

GROUP BY 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子句按照所有可能的列組合進行分組。例如GROUP BY CUBE (a, b),結果集為(a, b)、(null, b)、(a, null) 和 (null, null) 。

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

GROUP BY GROUPING SETS

GROUP BY GROUPING SETS子句按照列依次進行分組。例如GROUP BY GROUPING SETS (a, b),結果集為(a, null)和(null, b)。

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

在SQL語句中,如果您使用了GROUP BY子句,則在執行SELECT語句時,只能選擇GROUP BY的列或者對任意列進行聚合計算,不允許選擇非GROUP BY的列。例如* | SELECT status, request_time, COUNT(*) AS PV GROUP BY status為非法分析語句,因為request_time不是GROUP BY的列。正確語句為* | SELECT status, arbitrary(request_time), count(*) AS PV GROUP BY status

參數說明

參數

說明

key

日志字段名稱或聚合函數計算結果列,即支持按照日志字段名稱或聚合函數計算結果列進行分組。

GROUP BY子句支持單列或多列。

aggregate function

聚合函數。GROUP BY子句常與min、max、avg、sum、count等聚合函數搭配使用。更多信息,請參見聚合函數

示例

示例1

統計不同狀態碼對應的請求次數。

  • 查詢和分析語句

    * | SELECT status, count(*) AS PV GROUP BY status
  • 查詢和分析結果group by

示例2

按照每小時的時間粒度計算網站訪問PV。其中,__time__字段為日志服務中的保留字段,表示時間列。timedate_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                       
  • 查詢和分析結果group by

示例3

按照每5分鐘的時間粒度計算PV。

  • 查詢和分析語句

    因為date_trunc函數只能按照固定時間間隔統計。如果您需要按照自定義的時間進行統計分析,請按照數學取模方法進行分組。例如%300表示按照5分鐘的時間粒度進行取模對齊。

    * |
    SELECT
      count(*) AS PV,
      __time__-__time__ % 300 AS time
    GROUP BY
      time
    LIMIT
      1000
  • 查詢和分析結果group by

示例4

根據請求方法和請求狀態分組,先計算各個請求方法對應的訪問數據,再計算各個請求狀態對應的訪問數量。

  • 查詢和分析語句

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
      GROUPING SETS (request_method, status)
  • 查詢和分析結果GROUPING SETS

示例5

根據請求方法和請求狀態分組,分組集包括(null, null)、(request_method, null)、(null, status)和(request_method, status),計算以上各個分組的訪問數量。

  • 查詢和分析語句

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     CUBE (request_method, status)
  • 查詢和分析結果CUBE

示例6

根據請求方法和請求狀態分組,分組集包括(request_method, status)、(request_method, null)和(null, null),計算以上各個分組的訪問數量。

  • 查詢和分析語句

    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     ROLLUP (request_method, status)
  • 查詢和分析結果ROLLUP