好的,所以从选择日期范围开始,我有一个关于如何应该出现的逻辑的问题。
我必须检查enrollmenthistory
表的所有成员是否在某个月内处于活动状态。我必须处理的字段是subclientcode
,policyholderid
和suffixid
然后我注册了日期和退出日期 所以我的字段看起来像这样
client phid sid enroll date disenroll date
我要检查的第一件事是确保该组有活跃成员(scc + phid + sid)
我想按月分解。所以我会用date_format(enroll_date '%Y %m)
来隔离年份和日期。
这样的事可能
SELECT sub client code, phid, sid, date_formate(enroll date '%Y %m'),
date_formate(disenroll date '%Y %m')
FROM enrollmenthistory
WHERE sub client code = 'B01' and enroll_date is < 2010-02-01 and
disenroll_date is null or disenroll_date > 2010-01-01
如果有人可以帮助我使用这种语法,我会使用mySQL 5.5,也许我的逻辑也是错误的。
我必须考虑到有一个月的活跃会员,但可能在下个月没有活动,并且可能在下个月再次活跃。就像工会会员的保险一样。 或者该成员可能只在一个月的时间内有效。
任何需要澄清的帮助或问题将不胜感激。
提前致谢。
还要保持心情
之前我使用过此查询,但由于我需要记住的特定日期范围,min和max不会工作。
SELECT sub_client_cd, min( Enroll_date), max(Disenroll_Date), COUNT(*) as n
FROM big_pink.enrollment_test
WHERE Sub_Client_Cd = 'B01'
AND Policy_Holder_ID = 'BIS355702848' and Suffix_ID = 'e'
GROUP BY sub_client_cd;
这有效,但我需要更具体......
这是我最新的代码......
SELECT sub_client_cd, Enroll_date, Disenroll_Date, COUNT(*) as n
FROM big_pink.enrollment_test
WHERE Enroll_date < '2010-02-01' and (Disenroll_date is null or disenroll_date > '2010-01-01')
GROUP BY sub_client_cd;
如何使用SQL循环它,或者将它放在Python脚本中会更容易吗?