我有一个表格,每当状态发生变化时,它就会记录网站的 HTTP 状态代码,所以表格看起来像这样......
id status date
-----------------------------------
1 404 2015-10-01 13:30:00
2 200 2015-10-02 13:30:00
3 404 2015-10-03 13:30:00
我想使用这些数据在我的网站上显示一个表格,显示每个状态被记录的次数以及状态持续时间到当前时间的百分比。
我已经成功地使用以下查询获得了每个状态的总数....
SELECT
`status`,
COUNT(*) AS `status_count`
FROM `table_name`
GROUP BY `status`
ORDER BY `status`
...当执行时给我这样的东西...
status status_count
----------------------
200 1
404 2
我想修改我的 sql 添加持续时间到我的日期列计算的结果,我的目标是结束这个......
status status_count duration (%)
-----------------------------------
200 1 20
404 2 80
最佳答案
这里是 SQL FIDDLE DEMO
SELECT t1.status
,COUNT(t1.id) as status_count
,SUM(IF(t2.date IS NULL, NOW(), t2.date)-t1.date) / (NOW()-t3.start_date) as duration
FROM table_name t1
LEFT JOIN table_name t2 ON t1.id = (t2.id - 1)
,(SELECT MIN(date) as start_date FROM table_name) t3
GROUP BY t1.status
关于mysql - 计算持续时间百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529384/