Maison  >  Questions et réponses  >  le corps du texte

SOMME SQL de deux valeurs de colonnes multipliée par plage de dates

La question à laquelle je dois répondre est la suivante : « Quel est le coût total de l’administration de morphine à un patient nommé « John Smith » 

 ?

Dans mon schéma de base de données, j'ai le schéma suivant :

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

J'ai créé un exemple de schéma pour ce qui précède ici : https://www.db-fiddle.com/f/wecC7cjtryKMErqPskNr41/1

Comment construire une requête pour multiplier costPerUnit*unitsPerDay par le nombre de jours entre startDate et finishDate sans calculer manuellement le nombre de jours ?

Actuellement j'ai :

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;

De :

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粉129168206184 Il y a quelques jours381

répondre à tous(1)je répondrai

  • P粉517814372

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

    Essayez cette requête :

    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;

    répondre
    0
  • Annulerrépondre