按-SQL选择前3个最多计数组

use*_*389 4 mysql sql sql-server oracle subquery

我在sql下面有一个声明,根据国名进行分组.

SELECT COUNTRY,count(*) FROM DRUG_SEIZURE WHERE COUNTRY IS NOT NULL GROUP BY COUNTRY
Run Code Online (Sandbox Code Playgroud)

结果示例:

Country           Count
-------           -----
America           20
Saudi Arabia      28
China             10
Japan             14
Kenya             10
Pakistan          12
India             11
Run Code Online (Sandbox Code Playgroud)

我想要前三个最大值的国家.在上面的例子中我只想要:

Country           Count
-------           -----
Saudi Arabia      28
America           20
Japan             14
Run Code Online (Sandbox Code Playgroud)

Lin*_*ger 8

取决于您使用的RDBMS:

SQL SERVER:

SELECT TOP 3 COUNTRY, count(*) 
FROM DRUG_SEIZURE 
WHERE COUNTRY IS NOT NULL 
GROUP BY COUNTRY
ORDER BY count(*) DESC
Run Code Online (Sandbox Code Playgroud)

MySQL的:

SELECT COUNTRY, count(*) 
FROM DRUG_SEIZURE 
WHERE COUNTRY IS NOT NULL 
GROUP BY COUNTRY
ORDER BY count(*) DESC
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

甲骨文:

SELECT *
FROM (
  SELECT COUNTRY, count(*) 
  FROM DRUG_SEIZURE 
  WHERE COUNTRY IS NOT NULL 
  GROUP BY COUNTRY
  ORDER BY count(*) DESC
) mr
WHERE rownum <= 3
ORDER BY rownum;
Run Code Online (Sandbox Code Playgroud)