SQL 嵌套查询作业 SQL Fiddle

Posted

技术标签:

【中文标题】SQL 嵌套查询作业 SQL Fiddle【英文标题】:SQL Nested Query Homework SQL Fiddle 【发布时间】:2012-05-06 01:32:15 【问题描述】:

找到成员(患者)人数最多的保险公司。

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

http://sqlfiddle.com/#!3/4b2ed/27

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

我如何获得最大计数?

【问题讨论】:

仅供参考,您的问题是 mysql,但您的小提琴适用于 MSSQL。 它是小提琴中的一个错误,我在 mysql 上运行它我确定... 【参考方案1】:

尝试以下方法: 最大值(计数(P.pid))

【讨论】:

我相信@eggyal 已经成功了【参考方案2】:
SELECT  P.cid, COUNT ( P.pid ) AS CountP
FROM    Patient P
GROUP BY    P.cid
compute max(count(p.pid))

【讨论】:

我不应该使用关键字计算(顺便说一句,它在 sqlfiddle 上不起作用)【参考方案3】:

只需按患者数量递减的顺序排列您的结果,并且只记录第一个记录。

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

在您在 cmets 中描述的奇怪情况下,无法使用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);

【讨论】:

@OfekRon:正如上面提到的 Joachim,您的 sqlfiddle 是为 MSSQL 配置的,而您的问题被标记(我的答案是针对)MySQL。我创建了an equivalent MySQL fiddle,显示上述查询正常工作。对于 MSSQL,您需要使用 TOP(1) 代替 LIMIT 1(我认为需要将其紧跟在 SELECT 关键字之后)。 @eggyal 你是对的,虽然我不应该使用限制,嵌套查询还有其他方法吗? 您甚至不需要我的查询中的LIMIT - 您可以返回所有记录并只检查结果集中的第一条记录。 @OfekRon:请参阅上面我的答案的更新 - 虽然它使用子查询,但它仍然使用 LIMIT;那是你所追求的,还是LIMIT完全被禁止? SELECT P.cid AS cid, COUNT( P.pid ) AS CountP FROM Patient P GROUP BY P.cid HAVING CountP = ( SELECT MAX (dc) FROM (SELECT COUNT(pid) AS c FROM患者 GROUP BY cid ) AS d );【参考方案4】:

哇 - 很多限制。给你:

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

【讨论】:

以上是关于SQL 嵌套查询作业 SQL Fiddle的主要内容,如果未能解决你的问题,请参考以下文章

Python SQL 中的嵌套查询导致空数据框

在sql中对不相关嵌套查询的处理原则

SQL语句 - 嵌套查询

SQL语句 - 嵌套查询

标准SQL嵌套查询语句

SQL 查询 嵌套 FROM HAVING