Heim  >  Fragen und Antworten  >  Hauptteil

SQL-SUMME zweier Spaltenwerte multipliziert mit dem Datumsbereich

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粉129168206P粉129168206183 Tage vor377

Antworte allen(1)Ich werde antworten

  • P粉517814372

    P粉5178143722024-03-31 21:25:12

    尝试这个查询:

    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;

    Antwort
    0
  • StornierenAntwort