2016-10-24 33 views
0

我試圖獲得最大醫生的身份證號。醫療關注的號碼:找到最大的醫生。醫療護理人數

我的工作表有這些列:

Adm_ID //Id of the Attention 
Med_ID //Medical Procedure carried out 
Doc_ID //ID Doctor 

這是我的嘗試:

首先,我算的關注數的醫生有:

SELECT Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 

然後我發現他們

SELECT MAX(Attentions) 
FROM 
(
SELECT Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
) temp 
之間的最大

現在我有麻煩了。這將是很好,如果我能同時獲得DOC_ID和注意事項,但是當一個查詢類似

SELECT MAX(Attentions), Doc_ID 
FROM 
(
SELECT Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
) temp 

我得到一個錯誤(因爲它不包含列「temp.Doc_ID」在選擇列表中無效在集合函數或GROUP BY子句中)。

所以不是我想再次查詢的列DOC_ID和注意事項最裏面的桌子和匹配與馬克斯(注意事項)的注意事項:

SELECT Doc_ID 
FROM 
(
SELECT Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
) t1, 
(
SELECT MAX(Attentions) AS Maxattentions, 
FROM 
(
SELECT Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
) temp 
)t2 
WHERE t1.Attentions=t2.Maxattentions 

這是(醜陋的),並再次給出了一個錯誤。

我不知道如何得到它。

回答

4

它可以通過使用TOP 1Order By

SELECT TOP 1 Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
Order by Attentions desc 

簡化萬一有一個在最大計數領帶並希望所有的領帶記錄,然後使用TOP 1 with Ties

SELECT TOP 1 with Ties Doc_ID, COUNT(*) AS Attentions 
FROM Adm_Med 
GROUP BY Doc_ID 
Order by Attentions desc 
+0

感謝。現在我學到了一些新的東西(: – Jazz