我的桌子如下图所示:
ID Date IsFull
1 2020-01-05 0
1 2020-02-05 0
1 2020-02-25 1
1 2020-03-01 1
1 2020-03-20 1
我想显示ID = 1的月数
给定月份的总和(isfull)/ count(*)> .6(当月60%以上的时间isfull = 1)
所以最终的输出应该
ID HowManyMonths
1 1 --------(Only month 3----2 out 2 cases)
如果问题变为sum(isfull)/ count(*)> .4
那么最终的输出应该是
ID HowManyMonths
1 2 --------(Month 2 and Month 3)
谢谢!!
您可以使用两种聚合级别来执行此操作:
select id, count(*) howManyMonths
from (
select id
from mytable
group by id, year(date), month(date)
having avg(1.0 * isFull) > 0.6
) t
group by id
子查询按id,年和月进行聚合,并使用having
子句对满足成功率的组进行筛选(avg()
为此非常方便)。外部查询会计算每个ID通过目标费率多少个月。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句