Sql server 计算SQL中的唯一值
我遇到了一个SQL问题。 我有两张桌子:个人和病人治疗。 个人表包含个人信息,治疗表包含个人ID和接受治疗的患者ID。 我需要找到对不同患者给予最多治疗的个人。 我尝试了以下方法: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(*)
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
。顺便说一句:不要使用样式联接。