在SQL

时间:2018-05-23 13:11:14

标签: mysql sql mysql-workbench

 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

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;周期。