我正在尝试对连续的日期进行分组,对连续的日期进行计数,然后使用该计数作为过滤器。
我有一个当前看起来像的表:
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
具有相同的值,更不用说使用该计数作为过滤器了。如果有人可以提供帮助/提出解决方案的想法,将不胜感激。
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语句稍微简单一些:)