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

如何从sql上的count()中获取max()值?,sql,sql-server,Sql,Sql Server,我有以下表格: 访问:视频、pid、日期 患者:pid,pname,年龄,性别。 我想要的是通过使用计数和最大值函数让患者有更多的就诊次数。 我使用此查询进行了计数: 选择Patient.pname,将visions.pid计算为patientsvisions 从…起 病人内部会诊 on Patient.pid=visions.pid 按患者分组。pname 因此,我的输出显示了患者的姓名和每次就诊的次数 那么我怎样才能得到最大值?? ps:im使用sql server返回一个表,因此使用嵌套调

我有以下表格: 访问:视频、pid、日期 患者:pid,pname,年龄,性别。 我想要的是通过使用计数和最大值函数让患者有更多的就诊次数。 我使用此查询进行了计数:

选择Patient.pname,将visions.pid计算为patientsvisions 从…起 病人内部会诊 on Patient.pid=visions.pid 按患者分组。pname

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

那么我怎样才能得到最大值?? ps:im使用sql server返回一个表,因此使用嵌套调用从该表中选择具有最大值的行

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
);

基本上,我们使用一个选择来获得按*患者分组的就诊次数,然后我们将其嵌套在第二个选择中以获得最大就诊次数,然后我们将其嵌套在第三个选择框中,以查找就诊次数相同的患者。

我理解您的问题-您希望就诊次数最多的前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

哇,看起来棒极了!但什么才是最重要的?我只是在sql上输入了这个,在MaxCounts上得到了一个错误。pid说Column名称无效。在查询结束时,会出现另一个错误:没有为计数的第二列指定任何列…计数部分与AS PatientVisits重命名列的方式完全相同,只是这会重命名结果表。我在其中一个在线SQL测试中测试了调用,并将其修改为在这里工作,但看起来我在转换过程中犯了一个错误:也许这样行吗?从中选择Counts.pname、MAXCounts.pid作为pname,从患者内部连接访问中选择countvisions.pid作为pid作为对患者的访问。pid=visions.pid按患者分组。pname作为计数;但在键入:Counts.pname时,是否也会引用列名?或患者的姓名?Counts.pname引用Counts表的pname列,即使Counts表直到调用的后期才存在。这些是等效的:从表中选择table.column,从表中选择x.column作为xyeey。谢谢你,attila,它可以工作!!!但是我也要用MAX funtion来做,所以我不知道怎么做:/