【解決方法】SQL でクエリを最適化するより良い方法


I have written the queries but i would like to know the better way of optimizing it using groupby

Outpatient

ID	TreatedFor	        BillAmount	  VisitStartDate	VisitEndDate
1	General Treatment	   5000	     2023-04-17 8:55:10	2023-04-18 8:55:10
2	Head Injury	           10000	 2023-03-10 8:55:10	2023-03-15 8:55:10
3	Fever	               15000	 2023-03-22 8:55:10	2023-03-23 8:55:10
4	Casual	               3000	     2023-03-27 8:55:10	2023-03-27 8:55:10

Inpatient

ID	TreatedFor	      BillAmount	 AdmittedOn	            DischargedOn
1	General Treatment	3000	  2023-04-12 8:55:10	  2023-04-18 8:55:10
2	Head Injury	        30000	  2023-03-09 8:55:10	  2023-03-17 8:55:10
3	Fever	            40000	  2023-03-12 8:55:10	  2023-03-24 8:55:10
4	Surgery	            70000	  2023-03-25 8:55:10	  2023-03-24 8:55:10

FollowUpCalls

ID  TreatedFor         Visits     FollowUps               Date
1   General Treatment   1       2023-04-12 8:55:10  2023-04-18 8:55:10
2   Head Injury         0       2023-03-09 8:55:10  2023-03-17 8:55:10
3   Fever               1       2023-03-12 8:55:10  2023-03-24 8:55:10
4   Surgery             1       2023-03-25 8:55:10  2023-03-24 8:55:10

私が試したこと:

select(select sum(BillAmount)from Outpatientwhere VisitStartDate >= '2023-03-01'and VisitEndDate <'2023-03-31') as OPBill,(select sum(BillAmount)from Inpatientwhere AdmittedOn >= '2023-03-01'and DischargedOn < '2023-03-31') as IPBill(select COUNT()from FollowUpCallswhere [Date] IS NOT NULLand Visitsbetween '2023-03-01' and '2023-03-31') as Fvisits(select COUNT()from FollowUpCallswhere [Date] IS NOT NULLand FollowUpsbetween '2023-03-01' and '2023-03-31'and (Visits = 1 AND  [Date] IS NOT NULL) as FCalls)
I have written the queries but i would like to know the better way of optimizing it using groupby

Expecting the data to be with group by patient Id

OPBill	IPBill	Fvisits	FCalls

解決策 1

実際にどのようなデータが得られると予想されるかがわからない場合、最適化に関する具体的なアドバイスはできませんが、次の 2 つのことが発生します。

1) クエリをフォーマットします。 長い 1 行のテキストは簡単には解決できません。複数行に分割すると、読みやすくなり、メンテナンスしやすくなります。また、まとめてまとめなかった人にとってもより良いものになります。

2) 推測では、おそらく次のことから始める必要があります。 SQL 結合[^] 同様に(または代わりに) SQL GROUP BY[^]

まず、サンプル データを取得し、何を生成するか、出力の各要素をどこから取得するかを決定します。 次に、複数のサブクエリの代わりに JOINing と GROUPing を見てください。

コメント

タイトルとURLをコピーしました