ORDER BY子句用于根据指定的列名对查询和分析结果进行排序。

语法

ORDER BY 列名 [DESC | ASC]
说明
  • 您可以指定多个列名,按照不同的排序方式排序。例如ORDER BY 列名1 [DESC | ASC], 列名2 [DESC | ASC]
  • 如果您未配置关键字DESC或ASC,则系统默认对查询和分析结果进行升序排列。
  • 当排序的目标列中存在相同的值时,每次排序结果可能不同。如果您希望每次序列结果相同,可指定多个列进行排序。

参数说明

参数 说明
列名 列名即为日志字段名称或聚合函数计算结果列,即支持按照日志字段名称(KEY)或聚合函数计算结果列进行排序。
DESC 降序排列。
ASC 升序排列。

示例

  • 示例1:统计不同请求状态码对应的请求次数,并按照请求次数降序排列。
    • 查询和分析语句
      * |
      SELECT
        count(*) AS PV,
        status
      GROUP BY
        status
      ORDER BY
        PV DESC
    • 查询和分析结果order by
  • 示例2:计算写入日志到各个Logstore的平均延迟时间,并按照平均延迟时间进行降序排列。
    • 查询和分析语句
      method :PostLogstoreLogs |
      SELECT
        avg(latency) AS avg_latency,
        LogStore
      GROUP BY
        LogStore
      ORDER BY
        avg_latency DESC
    • 查询和分析结果order by
  • 示例3:计算不同请求时长对应的请求数量,并按照请求时长进行升序排序。

    其中,contenttimerequest_time为JSON日志中的字段。

    注意

    在查询和分析JSON类型的日志时,需注意以下事项。更多信息,请参见查询和分析JSON日志

    • 必须给字段名称加上JSON中父路径前缀,例如content.time.request_time
    • 分析语句中的JSON字段名称必须使用双引号("")包裹,例如"content.time.request_time"
    • 查询和分析语句
      * |
      SELECT
        "content.time.request_time",
        count(*) AS count
      GROUP BY
        "content.time.request_time"
      ORDER BY
        "content.time.request_time"
    • 查询和分析结果请求时长