Maison > Questions et réponses > le corps du texte
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粉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;