如何分组,计算连续日期并将其用作Netezza中的过滤器

问题描述 投票:0回答:1

我正在尝试对连续的日期进行分组,对连续的日期进行计数,然后使用该计数作为过滤器。

我有一个当前看起来像的表:

pat_id   admin_dates   admin_grp    daily_admin    
-------------------------------------------------
1        08/20/2018        1          2 doses
1        08/21/2018        1          3 doses
1        08/22/2018        1          1 doses
1        10/05/2018        2          3 doses
1        12/10/2018        3          4 doses
2        01/05/2019        1          1 doses
2        02/10/2019        2          2 doses
2        02/11/2019        2          2 doses

其中admin_grp将每个pat_id的连续日期分组。

我想排除同一pat_id连续日期少于3个的所有行。在此示例中,只有pat_id = 1 and admin_grp = 1条件具有3个连续的日期,我希望在结果中看到这些日期。我想要的输出是:

pat_id   admin_dates   admin_grp    daily_admin    
-------------------------------------------------
1        08/20/2018        1          2 doses
1        08/21/2018        1          3 doses
1        08/22/2018        1          1 doses

老实说,我[知道如何执行此操作。我的尝试未能计算出在同一admin_grp中有多少pat_id具有相同的值,更不用说使用该计数作为过滤器了。如果有人可以提供帮助/提出解决方案的想法,将不胜感激。

sql count filtering grouping netezza
1个回答
0
投票
简短的答案:将表格与自己的表格放在'pat_id'上并进行适当过滤:

Select a.* from TABLE a join (Select * from TABLE where daily_admin=‘3 doses’) b using (pat_id) Where a.daily_admin in (‘1 doses’, ‘2 doses’, ‘3 doses’)

顺便说一句:“ daily_admin”列不是整数,这太糟糕了……更好的数据模型会使Where语句稍微简单一些:)
© www.soinside.com 2019 - 2024. All rights reserved.