如何从sql上的count()获取max()值?

时间:2014-05-17 01:17:33

标签: sql sql-server

我有以下表格: 访问:视频,pid,日期 患者:pid,pname,年龄,性别。 我想要的是通过使用计数和最大功能让患者获得更多访问。 我用这个查询做了计数:

选择Patient.pname,计数(Visits.pid)为PatientsVisits 来自( 患者内部联接访问 在Patient.pid = Visits.pid) 分组来自Patient.pname

因此,我的输出显示患者姓名和每个人的就诊次数。

那么我怎样才能获得最大值? ps:即时通讯使用sql server

2 个答案:

答案 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