sql - 日期差异的情况
问题描述
我正在尝试计算或计算日期差异为一定数量的行数,但不确定如何
select count(case when date_diff('day', min_time, max_time) <= 7 then 1 else null end) / count(*)
from table
但它似乎没有解决问题,不确定是否有更好的方法来实现这一点,谢谢!
解决方案
编辑:正如@shawnt00 在对该问题的评论中提到的那样,问题很可能是您正在划分整数(也导致整数,即在这种情况下为 0 或 1)。添加 a* 1.0
应该可以解决问题(或者如果您愿意,可以添加到 float8 )。
您可以为此使用该FILTER
子句:
select count(*) filter (where date_diff('day', min_time, max_time) <= 7) * 1.0 / count(*)
from table
虽然看起来你正在计算平均值,但这样的事情可能是最简单的:
select avg(case when date_diff('day', min_time, max_time) <= 7 then 1.0 else 0.0 end)
from table