Хорошо, поэтому, начиная с выбранного диапазона дат, у меня есть вопрос относительно логики того, как это должно получиться.
Я должен проверить, что все члены моей таблицы 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?