In the Data shown,we need to do a continuous pattern check of Leaves,
例如:
CASE
WHEN count("Leaves") BETWEEN 1 AND 2 THEN '1-2'
WHEN count("Leaves") BETWEEN 3 AND 5 THEN '3-5'
WHEN count("Leaves") >5 THEN '>5'
ELSE 'Above 5' END AS "Leave Occurence",
1月1日和2日,员工已经拿走了2片叶子属于 ' 1-2'铲斗, 同样地,8,9,10,11号JAN在4天内是连续的,因此在3-4号桶中 并且超过5叶属于[< 5] Bucket
现在我们需要明智的每个Bucket的数量。 这里1-2Bucket是2 3-4Bucket是1 < 5 Bucket也是1
我们使用了这段代码,但它给出了SUM,但没有检查连续模式
Year Month Leaves
2011 1-Jan 1
2-Jan 1
3-Jan 0
4-Jan 0
5-Jan 0
6-Jan 0
7-Jan 0
8-Jan 1
9-Jan 1
10-Jan 1
11-Jan 1
12-Jan 0
13-Jan 0
14-Jan 0
15-Jan 1
16-Jan 1
17-Jan 1
18-Jan 1
19-Jan 1
20-Jan 1
21-Jan 0
22-Jan 0
23-Jan 1
24-Jan 1
答案 0 :(得分:0)
您可以通过计算每组叶子的数量来识别每组叶子。然后你有聚合:
select min(date), max(date), count(*) as numdays
from (select t.*,
(select count(*)
from t t2
where t2.date <= t.date and t2.leave = 0
) as grp
from t
where t.leave = 1
) t
group by grp;
然后,您可以根据需要格式化结果。这样每个连续一行就会给你一行#34;离开&#34;周期。