列出文件,计算OK和NOK的数量并按日期排序

时间:2017-08-28 23:37:59

标签: mysql sql psql

我有一个包含3列的数据库。一个名为路径的文件路径,一个名为OK或NOK的名称为状态,另一个名为时间的日期和时间。

Path        Status      Date 
/var/log    200         2016-10-20
/etc/rc.d   404         2016-10-21
/etc/rc.d   200         2016-10-21

所以我试图按相同路径排序,但显示成功但未按日期和路径成功的次数。

我试过这样的事情,但它给了我整个数据库中的错误总数,而不是给定日期发生的错误总数。

select to_char(time, 'YYYY-MM-DD') as date, 
       (SELECT count(status) from  log where status like '404%') as error,
       (SELECT count(status) from log where status like '200%') as success 
from log group by date, error, success limit 10;


  date      | error | success 
------------+-------+---------
 2016-07-01 | 12908 | 1664827
 2016-07-02 | 12908 | 1664827
 2016-07-03 | 12908 | 1664827
 2016-07-04 | 12908 | 1664827
 2016-07-05 | 12908 | 1664827
 2016-07-06 | 12908 | 1664827
 2016-07-07 | 12908 | 1664827
 2016-07-08 | 12908 | 1664827
 2016-07-09 | 12908 | 1664827
 2016-07-10 | 12908 | 1664827
 (10 rows)

1 个答案:

答案 0 :(得分:0)

你可以像excel一样进行总结:

SELECT 
    date,
    path,
    SUM(IF(status like '200%', 1, 0)) as success,
    SUM(IF(status like '404%', 1, 0)) as error
FROM log
GROUP BY date, path;