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');
尝试这个查询: