Sql 获取每日错误的百分比
我有一个表,其中有两列(时间、状态) 我在“时间”列中选择某一天,并应用状态为“404未找到”的条件 然后将其与每日计数相除 获取每日错误的百分比Sql 获取每日错误的百分比,sql,database,postgresql,Sql,Database,Postgresql,我有一个表,其中有两列(时间、状态) 我在“时间”列中选择某一天,并应用状态为“404未找到”的条件 然后将其与每日计数相除 获取每日错误的百分比 status has 2 values 404 NOT FOUND and 200 OK -------------------------------------------- 我想获得每日错误百分比 我试过: 选择状态为“404未找到”时的情况,然后按日期(“天”,时间)从日志组中计数(时间)结束/计数(时间) 但出现错误i get error
status has 2 values 404 NOT FOUND and 200 OK
--------------------------------------------
我想获得每日错误百分比
我试过:
选择状态为“404未找到”时的情况,然后按日期(“天”,时间)从日志组中计数(时间)结束/计数(时间)代码>
但出现错误i get error列“log.status”必须出现在GROUP BY子句中,或用于聚合函数中
SELECT days, (ERROR*1.0/TOTAL)*100.0 Percentage FROM
(select date_trunc('day',time) days,
COUNT(case when status = '404 NOT FOUND'
then 1 ELSE NULL END) ERROR,
COUNT(1) TOTAL
from log
group by date_trunc('day',time)) A;
我会这样做:
select date_trunc('day', time) as dte,
avg(case when status <> '200 OK' then 1.0 else 0 end) as daily_rate
from log l
group by dte;
选择日期(日期、时间)作为dte,
平均值(状态为“200正常”时为1.0,否则为0结束)作为每日费率
从日志l
dte分组;
在Postgres中,这可以进一步缩短为:
select date_trunc('day', time) as dte,
avg( (status <> '200 OK')::int ) as daily_rate
from log l
group by dte;
选择日期(日期、时间)作为dte,
平均值((状态“200正常”)::int)作为每日费率
从日志l
dte分组;
COUNT
需要与分组依据一起使用。如何将其放入分组依据??您能给我解释一下吗?仅第2行和第3行错误:语法错误位于或接近“)”第3行:然后是1 ELSE NULL)错误重试。修正了一些拼写错误。返回?列?使用31个零乘以1.0转换为十进制。这将产生更好的结果。如你所知,我想选择时间和错误/总数,其中错误/总数>1