2

会員数(患者数)が最大の保険会社を探す。

それがデータベースであり、近づくための私の最初の試みです:

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

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

最大 countp を取得するにはどうすればよいですか?

4

4 に答える 4

4

患者数の降順で結果を並べ替え、最初のレコードのみを取得します。

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);
于 2012-04-25T11:17:31.643 に答える
0

以下を試してください:
max(count(P.pid))

于 2012-04-25T11:13:30.270 に答える
0
SELECT  P.cid, COUNT ( P.pid ) AS CountP
FROM    Patient P
GROUP BY    P.cid
compute max(count(p.pid))
于 2012-04-25T11:15:01.477 に答える
0

うわー - たくさんの制約。どうぞ:

SELECT MAX(CountP) FROM (
  SELECT P.cid, COUNT ( P.pid ) AS CountP
  FROM  Patient P
  GROUP BY  P.cid
) winner
于 2012-04-25T11:18:18.193 に答える