Doctor
doctorid (PK) doctorname
Patient
patientid (PK) patientname doctorid
I have the following query to get the doctors details with the number of patients that he/she consults. assume a patient has only one doctor to consult.
select d.doctorid,d.doctorname,count(p.patientid)
from doctor d
inner join patient p
on d.doctorid = p.doctorid
group by p.doctorid
Now I need to get the same information but only for the doctors who has more than 1 patients. Please suggest me a query.
Use HAVING
clause
SELECT d.doctorid,
d.doctorname,
COUNT(p.patientid) AS patients
FROM doctor d
INNER JOIN patient p
ON d.doctorid = p.doctorid
GROUP BY
d.doctorid,
d.doctorname
HAVING patients > 1
I used alias (patients
) instead of COUNT(p.patientid)
, because HAVING
clause allows that. But you can stick to the COUNT(p.patientid)
as well
Also, I suggest you use all non-aggregated columns in the GROUP BY
clause.
And, if you retrieving doctorname
, you, probably, don't have to retrieve doctorid
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With