我有files
表,方向为in
和out
。
如果状态计数超过4并且保留第1到第4列,我应该如何对数据求和。现在我使用Having
来过滤那些不是我想要的数据。
当我按status
字段分组时,结果可能超过4行,具有不同的状态(例如,当我使用年度分辨率(%Y
)时)。
SELECT DATE_FORMAT(start_time, '%Y-%m-%d') start_time, status, count(*) stat_count
FROM files WHERE direction='out'
AND start_time > '2017-17-01'
GROUP BY DATE_FORMAT(start_time, '%Y-%m-%d'), status HAVING stat_count>10 ORDER BY start_time, stat_count DESC
如何在other
列中添加其他数据的计数(*)?
修改-1: 这是一个示例结果:
start_time status stat_count
2017-05-01 success 23
2017-05-01 failed_permission 14
2017-05-01 failed_io 13
2017-05-01 file_not_found 7
2017-05-01 unknown 2
2017-05-01 large_file 1
2017-05-03 success 23
2017-05-03 failed_permission 14
2017-05-03 failed_io 13
2017-05-03 file_not_found 7
2017-05-03 large_file 1
2017-05-03 exception 1
根据日期状态计数超过4时,应根据other
在名为start_time
的列中对其进行求和:
start_time status stat_count
2017-05-01 success 23
2017-05-01 failed_permission 14
2017-05-01 failed_io 13
2017-05-01 file_not_found 7
2017-05-01 other 3
2017-05-03 success 23
2017-05-03 failed_permission 14
2017-05-03 failed_io 13
2017-05-03 file_not_found 7
2017-05-03 other 2
NB:他们不会根据他们的价值求和。严格限制每天的行数限制。如果有4行,值为5,4,3,1,则它们将保留,因为我们还没有达到第5行。