SQL-SUMME zweier Spaltenwerte multipliziert mit dem Datumsbereich
P粉129168206
P粉129168206 2024-03-30 22:37:08
0
1
476

Die Frage, die ich beantworten muss, lautet: „Wie hoch sind die Gesamtkosten für die Verabreichung von Morphium an einen Patienten namens „John Smith“?“

In meinem Datenbankschema habe ich das folgende Schema:

Patient (patientNo, patName, patAddr, DOB)
Ward (wardNo, wardName, wardType, noOfBeds)
Contains (patientNo, wardNo, admissionDate)
Drug (drugNo, drugName, costPerUnit)
Prescribed (patientNo, drugNo, unitsPerDay, startDate, finishDate)

Ich habe hier ein Beispielschema für das oben Genannte erstellt: https://www.db-fiddle.com/f/wecC7cjtryKMErqPskNr41/1

Wie konstruiere ich eine Abfrage, um costPerUnit*unitsPerDay mit der Anzahl der Tage zwischen StartDate und FinishDate zu multiplizieren, ohne die Anzahl der Tage manuell zu berechnen?

Derzeit habe ich:

SELECT SUM r.unitsPerDay*d.costPerUnit BETWEEN '2022-05-25' AND '2022-06-25' AS TotalCost, p.patName, d.drugName
FROM Prescribed r, Drug d, Patient p
WHERE p.patientNo=r.patientNo AND d.drugNo=r.drugNo AND r.drugNo=1001;

Von:

insert into Drug (drugNo, drugName, costPerUnit) values (1001, 'Morphine', '25.00');
insert into Patient (patientNo, patName, patAddr, DOB) values (101, 'John Smith', '123 Street', DATE '1990-01-01');
insert into Prescribed (patientNo, drugNo, unitsPerDay, startDate, finishDate) values (101, 1001, 4, DATE '2022-05-25', DATE '2022-06-25');

P粉129168206
P粉129168206

Antworte allen(1)
P粉517814372

尝试这个查询:

SELECT SUM (r.unitsPerDay*d.costPerUnit*(finishDate-startDate)) AS TotalCost, p.patName, d.drugName
FROM Prescribed r, Drug d, Patient p
WHERE p.patientNo=r.patientNo AND d.drugNo=r.drugNo AND r.drugNo=1001;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage