Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取每日错误的百分比_Sql_Database_Postgresql - Fatal编程技术网

Sql 获取每日错误的百分比

Sql 获取每日错误的百分比,sql,database,postgresql,Sql,Database,Postgresql,我有一个表,其中有两列(时间、状态) 我在“时间”列中选择某一天,并应用状态为“404未找到”的条件 然后将其与每日计数相除 获取每日错误的百分比 status has 2 values 404 NOT FOUND and 200 OK -------------------------------------------- 我想获得每日错误百分比 我试过: 选择状态为“404未找到”时的情况,然后按日期(“天”,时间)从日志组中计数(时间)结束/计数(时间) 但出现错误i get error

我有一个表,其中有两列(时间、状态) 我在“时间”列中选择某一天,并应用状态为“404未找到”的条件

然后将其与每日计数相除 获取每日错误的百分比

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