ロジスティック回帰は、一意に識別される番号と、それに続く人が特定の基準を満たしているかどうかに基づく複数のバイナリ変数 (常に 1 または 0) で構成されます。以下に、これらのバイナリ条件のいくつかをリストするクエリを示します。このような基準が 4 つしかない場合、クエリの実行には、私が考えるよりも少し時間がかかります。以下よりも効率的なアプローチはありますか?ノート。tblicd は、15,000 行以上のテキスト表現を持つ大規模なテーブル ルックアップ テーブルです。クエリは実際には意味がありません。概念の証明にすぎません。複合キーに適切なインデックスがあります。
select patient.patientid
,case when exists
(
select c.patientid from tblclaims as c
inner join patient as p on p.patientid=c.patientid
and c.admissiondate = p.admissiondate
and c.dischargedate = p.dischargedate
where patient.patientid = p.patientid
group by c.patientid
having count(*) > 1000
)
then '1' else '0'
end as moreThan1000
,case when exists
(
select c.patientid from tblclaims as c
inner join patient as p on p.patientid=c.patientid
and c.admissiondate = p.admissiondate
and c.dischargedate = p.dischargedate
where patient.patientid = p.patientid
group by c.patientid
having count(*) > 1500
)
then '1' else '0'
end as moreThan1500
,case when exists
(
select distinct picd.patientid from patienticd as picd
inner join patient as p on p.patientid= picd.patientid
and picd.admissiondate = p.admissiondate
and picd.dischargedate = p.dischargedate
inner join tblicd as t on t.icd_id = picd.icd_id
where t.descrip like '%diabetes%' and patient.patientid = picd.patientid
)
then '1' else '0'
end as diabetes
,case when exists
(
select r.patientid, count(*) from patient as r
where r.patientid = patient.patientid
group by r.patientid
having count(*) >1
)
then '1' else '0'
end
from patient
order by moreThan1000 desc