tencent cloud

文档反馈

GROUP BY 语法

最后更新时间:2024-01-20 17:25:15
    GROUP BY 语法用于结合 聚合函数,根据一个或多个列对分析结果进行分组统计。

    语法格式

    * | SELECT 列名, 聚合函数 GROUP BY [ 列名 | 别名 | 序号 ]
    注意:
    在 SQL 语句中,如果您使用了 GROUP BY 语法,则在执行 SELECT 语句时,只能选择 GROUP BY 的列或聚合计算函数,不允许选择非 GROUP BY 的列。例如 * | SELECT status, request_time, COUNT(*) AS PV GROUP BY status 为非法分析语句,因为 request_time 不是 GROUP BY 的列。
    GROUP BY 语法支持按照列名、别名或序号进行分组,详细说明如下表所示:
    参数
    说明
    列名
    日志字段名称或聚合函数计算结果列,支持单列或多列
    别名
    按照日志字段或聚合函数计算结果的别名进行分组
    序号
    某列在 SELECT 语句中的序号(从1开始)。
    例如 status 列的序号为1,所以下面两个语句为等同关系。
    * | SELECT status, count(*) AS PV GROUP BY status
    * | SELECT status, count(*) AS PV GROUP BY 1
    聚合函数
    GROUP BY 语法常与 MIN、MAX、AVG、SUM、COUNT 等聚合函数搭配使用,更多信息请参见 聚合函数

    语法示例

    统计不同状态码的访问次数:
    * | SELECT status, count(*) AS pv GROUP BY status
    按照每分钟的时间粒度,计算 PV:
    * |
    SELECT
    date_trunc(
    'minute',
    cast(__TIMESTAMP__ as timestamp)
    ) AS dt,
    count(*) AS pv
    GROUP BY
    dt
    ORDER BY
    dt
    limit
    10
    __TIMESTAMP__ 字段为日志服务中的保留字段,表示时间列。dt 为 date_trunc('minute', cast(__TIMESTAMP__ as timestamp)) 的别名。date_trunc() 函数的更多信息,请参见 时间截断函数
    说明:
    limit 10表示最多获取10行结果。如果不使用 LIMIT 语法,则默认获取100行结果。
    在索引配置中,当您开启任意字段的统计功能后,日志服务会自动开启 __TIMESTAMP__ 字段的统计功能。
    按照5分钟的时间粒度统计 PV 及 UV: 因为 date_trunc() 函数只能按照固定时间间隔统计,可以使用 histogram 函数进行自定义时间间隔统计。
    * |
    SELECT
    histogram(
    cast(__TIMESTAMP__ as timestamp),
    interval 5 minute
    ) as dt,
    count(*) as pv,
    count(
    distinct(remote_addr)
    ) as uv
    group by
    dt
    order by
    dt
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持