Sql server 计算SQL中的唯一值

Sql server 计算SQL中的唯一值,sql-server,Sql Server,我遇到了一个SQL问题。 我有两张桌子:个人和病人治疗。 个人表包含个人信息,治疗表包含个人ID和接受治疗的患者ID。 我需要找到对不同患者给予最多治疗的个人。 我尝试了以下方法: SELECT ID , First_Name , Last_Name FROM Personal JOIN Patients_Treatments ON ID = Personal_id GROUP BY ID , First_Name , Last_Name HAVING COUNT(*)

我遇到了一个SQL问题。 我有两张桌子:个人和病人治疗。 个人表包含个人信息,治疗表包含个人ID和接受治疗的患者ID。 我需要找到对不同患者给予最多治疗的个人。 我尝试了以下方法:

   SELECT ID , First_Name , Last_Name
   FROM Personal JOIN Patients_Treatments ON ID = Personal_id 
   GROUP BY ID , First_Name , Last_Name
   HAVING COUNT(*) >= ALL (SELECT COUNT(Personal_id) FROM Patients_Treatments 
   GROUP BY Personal_id)
问题是,它给的是给最多治疗的人,而不是给不同患者最多治疗的人。 谢谢你抽出时间

编辑: 如果有人感兴趣,请找到解决方案:

SELECT Personal.ID,First_Name,Last_Name
FROM Personal,Patients_Treatments
WHERE Personal.id = Patients_Treatments.Personal_id
GROUP BY Personal.ID,First_Name,Last_Name
HAVING COUNT(distinct Patient_ID) >= all(SELECT COUNT(distinct Patient_ID) 
FROM [Patients_Treatments] GROUP BY Personal_id)

这将使个人获得最高待遇

SELECT TOP 1 WITH TIES ID , First_Name , Last_Name
FROM Personal JOIN Patients_Treatments ON ID = Personal_id 
GROUP BY ID , First_Name , Last_Name
ORDER BY COUNT(DISTINCT Patient_ID) DESC

Sooo,mysql还是SQL Server?对不起,点击小姐,SQL Server我投票给了你,但是你需要更改
计数(不同的个人id)
计数(不同的个人id)DESC
@Lamak gotcha:)不起作用,我想因为你计算了个人id出现的次数,这是1。不管怎样,我找到了一个解决方案,但感谢您的努力:)您是对的,应该是
orderbycount(DISTINCT patient_id)DESC
。顺便说一句:不要使用样式联接。