添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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,

    SELECT 
    keyaggregate 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

    按照每小时的时间粒度计算网站访问PV。其中, __time__ 字段为日志服务中的保留字段,表示时间列。 time date_trunc('hour', __time__) 的别名。date_trunc函数的更多信息,请参见 date_trunc函数

  • 查询和分析语句
    * |
    SELECT
      count(*) AS PV,
      date_trunc('hour', __time__) AS time
    GROUP BY
    ORDER BY
    LIMIT
                         
  • 查询和分析结果group by
  • 按照每5分钟的时间粒度计算PV。

  • 查询和分析语句

    因为date_trunc函数只能按照固定时间间隔统计。如果您需要按照自定义的时间进行统计分析,请按照数学取模方法进行分组。例如%300表示按照5分钟的时间粒度进行取模对齐。 SELECT count(*) AS PV, __time__-__time__ % 300 AS time GROUP BY LIMIT

  • 查询和分析结果group by
  • 根据请求方法和请求状态分组,先计算各个请求方法对应的访问数据,再计算各个请求状态对应的访问数量。

  • 查询和分析语句
    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
      GROUPING SETS (request_method, status)
  • 查询和分析结果GROUPING SETS
  • 根据请求方法和请求状态分组,分组集包括(null, null)、(request_method, null)、(null, status)和(request_method, status),计算以上各个分组的访问数量。

  • 查询和分析语句
    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     CUBE (request_method, status)
  • 查询和分析结果CUBE
  • 根据请求方法和请求状态分组,分组集包括(request_method, status)、(request_method, null)和(null, null),计算以上各个分组的访问数量。

  • 查询和分析语句
    * |
    SELECT
      request_method,
      status,
      count(*) AS PV
    GROUP BY
     ROLLUP (request_method, status)
  • 查询和分析结果ROLLUP
  •