SOMME SQL de deux valeurs de colonnes multipliée par plage de dates
P粉129168206
P粉129168206 2024-03-30 22:37:08
0
1
478

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粉129168206
P粉129168206

répondre à tous(1)
P粉517814372

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;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal