2016-10-24 3 views
0

私は最大を行った医者のIDを取得しようとしています。医療注目の数:これは私の試み最大の医者を見つけてください。医学的注意の数

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と注目を得ることができる場合、それはいいだろうが、私はそれが含まれていないため、エラー(列「temp.Doc_ID」は、選択リストに無効で取得するとき

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

ようなクエリ何か集計関数またはGROUP BY句のいずれか)。

ので、代わりに私は再び列DOC_IDや注意の喚起と最も内側のテーブルを照会しようとMax(注意の喚起)で注目をマッチングしています:

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

感謝を使いたいがある場合にはTOP 1Order By

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

を使用することによって単純化することができます。今私は何か新しいことを学んだ(: – Jazz

関連する問題