找到最大成員(患者)數量的保險公司。SQL嵌套式查詢作業SQL小提琴
這就是數據庫和我第一次嘗試更貼近:
http://sqlfiddle.com/#!3/4b2ed/27
SELECT P.cid AS cid, COUNT (P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
如何獲得最大countp?
找到最大成員(患者)數量的保險公司。SQL嵌套式查詢作業SQL小提琴
這就是數據庫和我第一次嘗試更貼近:
http://sqlfiddle.com/#!3/4b2ed/27
SELECT P.cid AS cid, COUNT (P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
如何獲得最大countp?
只是爲了你的結果降序的病例數,並只取第一條記錄。
SELECT P.cid AS cid, COUNT(P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
ORDER BY CountP DESC
LIMIT 1
如果不止一家保險公司可能有成員是最大的號碼,你想獲取所有的人,你將需要使用子查詢:
SELECT P.cid AS cid, COUNT(P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
HAVING CountP = (
SELECT COUNT(pid) AS c
FROM Patient
GROUP BY cid
ORDER BY c DESC
LIMIT 1
);
在你描述的怪現狀在您的意見,其中一個是無法使用LIMIT
,你可以這樣做:
SELECT P.cid AS cid, COUNT(P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
HAVING CountP = (SELECT MAX(d.c) FROM (
SELECT COUNT(pid) AS c
FROM Patient
GROUP BY cid
) AS d);
+1,這是答案 – virtualeyes 2012-04-25 11:18:17
爲什麼它不在小提琴上工作? – 2012-04-25 11:23:40
@OfekRon:正如Joachim上面提到的,你的sqlfiddle是爲MSSQL配置的,而你的問題是標記的(而且我的答案是)MySQL。我創建了[相當於MySQL的小提琴](http://sqlfiddle.com/#!2/c4a9f/2),顯示上述查詢的工作。對於MSSQL,你需要使用'TOP(1)'來代替'LIMIT 1'(我相信它需要在'SELECT'關鍵字後立即放置)。 – eggyal 2012-04-25 11:29:13
嘗試用以下:
最大(計數(P.pid))
它不工作,在sqlfiddle上自己嘗試 – 2012-04-25 11:15:24
我相信@eggyal已經釘上它 – virtualeyes 2012-04-25 11:19:00
SELECT P.cid, COUNT (P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
compute max(count(p.pid))
即時通訊不應該使用關鍵字計算(並且它不工作sqlfiddle btw) – 2012-04-25 11:16:47
MAX(COUNT())'不能按預期工作。 – 2012-04-25 11:35:57
哇 - 很多限制。在這裏你去:
SELECT MAX(CountP) FROM (
SELECT P.cid, COUNT (P.pid) AS CountP
FROM Patient P
GROUP BY P.cid
) winner
只是FYI,你的問題說MySQL,但你的小提琴是MSSQL。 – 2012-04-25 11:14:55
其在小提琴中的一個錯誤我運行它在mysql我確定... – 2012-04-25 11:17:32