Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL嵌套查询作业SQL FIDLE_Mysql_Sql_Nested Query - Fatal编程技术网

Mysql SQL嵌套查询作业SQL FIDLE

Mysql SQL嵌套查询作业SQL FIDLE,mysql,sql,nested-query,Mysql,Sql,Nested Query,寻找会员人数最多的保险公司 这是数据库,也是我第一次尝试靠近: 如何获取最大计数?请尝试以下操作: maxcountP.pid尝试以下操作: SELECT P.cid, COUNT ( P.pid ) AS CountP FROM Patient P GROUP BY P.cid compute max(count(p.pid)) maxcountP.pid只需按患者数量降序排列结果,并只记录第一条记录 SELECT P.cid, COUNT ( P.pid ) AS Coun

寻找会员人数最多的保险公司

这是数据库,也是我第一次尝试靠近:

如何获取最大计数?请尝试以下操作: maxcountP.pid

尝试以下操作:
SELECT  P.cid, COUNT ( P.pid ) AS CountP
FROM    Patient P
GROUP BY    P.cid
compute max(count(p.pid))

maxcountP.pid

只需按患者数量降序排列结果,并只记录第一条记录

SELECT  P.cid, COUNT ( P.pid ) AS CountP
FROM    Patient P
GROUP BY    P.cid
compute max(count(p.pid))
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
);
在您在评论中描述的奇怪情况下,如果无法使用限制,您可以:

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

只需按患者人数降序排列结果,并只记录第一条记录

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
);
在您在评论中描述的奇怪情况下,如果无法使用限制,您可以:

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

哇-有很多限制。给你:

SELECT MAX(CountP) FROM (
  SELECT P.cid, COUNT ( P.pid ) AS CountP
  FROM  Patient P
  GROUP BY  P.cid
) winner

哇-有很多限制。给你:

SELECT MAX(CountP) FROM (
  SELECT P.cid, COUNT ( P.pid ) AS CountP
  FROM  Patient P
  GROUP BY  P.cid
) winner

仅供参考,你的问题是MySQL,但你的提琴是为MSSQL设计的。这是提琴中的一个bug,我在MySQL上运行了它,我确定…仅供参考,你的问题是MySQL,但你的fiddle是为MSSQL设计的。这是fiddle中的一个bug我在MySQL上运行了它我确定…我不应该使用关键字compute,它在sqlfiddle btwim上不工作我不应该使用关键字compute,它在sqlfiddle btwI上不工作我相信@eggyal已经搞定了它我相信@eggyal已经搞定了it@OfekRon:作为约阿希姆如上所述,您的SQLFIDLE是为MSSQL配置的,而您的问题是有标签的,我的答案是为MySQL配置的。我已经创建了显示上述查询工作的。对于MSSQL,您需要使用TOP1来代替限制1,我认为限制1需要放在SELECT关键字之后。@eggyal您是对的,虽然我不应该使用限制,嵌套查询还有其他方法吗?在我的查询中,您甚至不需要限制-您可以返回所有记录,只检查结果集中的第一条记录。@OfekRon:请参阅上面对我的答案的更新-虽然这使用子查询,但它仍然使用限制;这就是您所追求的,还是限制完全无效?选择P.cid作为cid,将P.pid作为CountP从患者P组中按P.cid计算CountP具有CountP=从最大d.c选择COUNTpid作为c从患者组中按cid作为d@OfekRon:正如Joachim上面提到的,您的SQLFIDLE是为MSSQL配置的,而您的问题是有标签的,我的答案是为MySQL配置的。我已经创建了显示上述查询工作的。对于MSSQL,您需要使用TOP1来代替限制1,我认为限制1需要放在SELECT关键字之后。@eggyal您是对的,虽然我不应该使用限制,嵌套查询还有其他方法吗?在我的查询中,您甚至不需要限制-您可以返回所有记录,只检查结果集中的第一条记录。@OfekRon:请参阅上面对我的答案的更新-虽然这使用子查询,但它仍然使用限制;这就是您所追求的,还是限制完全无效?选择P.cid作为cid,将P.pid作为CountP从患者P组中按P.cid计算CountP具有CountP=从最大d.c选择COUNTpid作为c从患者组中按cid作为d;