我有以下表格: 访问:视频,pid,日期 患者:pid,pname,年龄,性别。 我想要的是通过使用计数和最大功能让患者获得更多访问。 我用这个查询做了计数:
选择Patient.pname,计数(Visits.pid)为PatientsVisits 来自( 患者内部联接访问 在Patient.pid = Visits.pid) 分组来自Patient.pname
因此,我的输出显示患者姓名和每个人的就诊次数。
那么我怎样才能获得最大值? ps:即时通讯使用sql server
答案 0 :(得分:3)
SELECT返回一个表,因此使用嵌套调用选择该表中具有最大值的行。
SELECT DISTINCT pname, COUNT(vid) AS PatientVisits FROM Visits JOIN Patients ON Visits.pid = Patients.pid
GROUP BY Visits.pid HAVING COUNT(vid) = (
SELECT MAX(y.x) FROM (SELECT COUNT(vid) AS x FROM Visits GROUP BY pid) AS y
);
基本上我们使用一个SELECT来获得GROUPED BY患者的COUNT次访问,然后我们将其嵌套在第二个SELECT中以获得MAX访问次数,然后我们将其嵌套在第三个SELECT内以找到患有该数量的患者访问。
答案 1 :(得分:0)
据我了解您的问题 - 您希望前1名患者访问次数最多,这应该是给您的
select top 1 Patient.pname, count (Visits.pid) as PatientsVisits
from Patient inner join Visits on Patient.pid = Visits.pid
group by Patient.pname
order by count(Visits.pid) desc