找到最大成员(患者)数量的保险公司。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