You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算日志表中非200 OK请求的路径占比及SQL语句解析

你的两条SQL解析及需求对齐方案

首先先明确你的核心需求:筛选出所有status != '200 OK'的记录,然后按时间维度分组,计算每个时间下不同路径请求的占比(这里的占比通常有两种常见理解,后面我会分别说明)。

先来看你写的两条SQL:

第一条SQL解析

select time as day, (count(status) * 100 / (select count(*) from log)) as error from log where status != '200 OK' group by day;

这条语句的实际逻辑是:

  • 第一步:筛选出所有status不等于'200 OK'的错误记录
  • 第二步:按time(别名day)分组,统计每个时间点的错误记录总数count(status)
  • 第三步:用每个时间的错误数 ×100,除以全表所有记录的总数(子查询select count(*) from log是统计整个表的总请求数,不管状态和时间)
  • 最终得到的error字段:是该时间点的错误请求数占全表总请求数的百分比,比如全表一共1000条请求,某天有50条错误,那这个值就是5%。

⚠️ 注意:这条语句既没有按path分组,也没有计算路径相关的占比,和你要的“各路径请求占比”完全不沾边。

第二条SQL解析

select time as day, (count(status) * 100.0 / (select count(*) from log where status != '200OK')) as errors from log where status != '200 OK' group by time order by errors DESC

这条语句有个小笔误:子查询里的status != '200OK'少了空格,和外层的'200 OK'不匹配,会导致子查询统计范围出错,我先假设是'200 OK'来解析:

  • 第一步:同样筛选出所有错误记录
  • 第二步:按time分组,统计每个时间点的错误数
  • 第三步:用每个时间的错误数 ×100,除以全表所有错误记录的总数(子查询统计的是整个表中所有status != '200 OK'的记录数)
  • 最终得到的errors字段:是该时间点的错误请求数占全表错误总请求数的百分比,比如全表一共200条错误,某天有40条,那这个值就是20%。

⚠️ 同样的问题:这条语句也没有按path分组,完全没涉及到路径的占比计算。

符合你需求的SQL方案

你的需求是“每个时间维度下各路径请求的占比”,通常有两种常见的统计方向,我分别给出对应的SQL:

方向1:每个时间内,某路径的错误请求数占该时间总请求数的比例

(比如:2016-07-01这天总共有100条请求,其中/path-to-page-B/的错误请求有10条,占比10%)

SELECT
    time AS day,
    path,
    COUNT(*) AS error_request_count,
    -- 计算该路径错误请求占当日总请求的百分比
    COUNT(*) * 100.0 / (SELECT COUNT(*) FROM log l2 WHERE l2.time = l1.time) AS error_ratio_of_daily_total
FROM log l1
WHERE status != '200 OK'
GROUP BY day, path
ORDER BY day, error_ratio_of_daily_total DESC;

方向2:每个时间内,某路径的错误请求数占该时间错误请求总数的比例

(比如:2016-07-01这天总共有50条错误请求,其中/path-to-page-B/的错误请求有20条,占比40%)

SELECT
    time AS day,
    path,
    COUNT(*) AS error_request_count,
    -- 用窗口函数统计当日错误总数,再计算占比
    COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (PARTITION BY time) AS error_ratio_of_daily_errors
FROM log
WHERE status != '200 OK'
GROUP BY day, path
ORDER BY day, error_ratio_of_daily_errors DESC;

内容的提问来源于stack exchange,提问作者meddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:24:29