我有一个包含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)
答案 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;