You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SELECT查询选取数据表列中频次第二高的重复值

查询countries表中出现频次排名第二的重复国家值

以下是可直接使用的SQL实现,默认存储国家信息的列名为country,如果你的实际列名不同,替换语句中对应的列名即可:

  • 适用于MySQL、PostgreSQL、SQLite等支持LIMIT语法的数据库:
-- 统计重复国家的出现频次,取排名第二的结果
SELECT 
  country,
  COUNT(*) AS repeat_count
FROM countries
GROUP BY country
HAVING COUNT(*) > 1 -- 过滤掉仅出现1次的非重复国家
ORDER BY repeat_count DESC
LIMIT 1 OFFSET 1; -- 跳过排名第1的结果,取1条即为第2名
  • 通用写法(支持所有含窗口函数的数据库,包括SQL Server、Oracle、MySQL8.0+等,可正确处理并列排名场景):
WITH country_freq_rank AS (
  SELECT
    country,
    COUNT(*) AS repeat_count,
    DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) AS freq_rank
  FROM countries
  GROUP BY country
  HAVING COUNT(*) > 1
)
SELECT country, repeat_count
FROM country_freq_rank
WHERE freq_rank = 2;

注意:推荐优先使用窗口函数的写法,当存在多个国家出现频次并列第一的场景时,DENSE_RANK()不会出现排名断层,可以准确返回频次第二梯队的所有国家,不会漏算结果。

内容的提问来源于stack exchange,提问作者user8905822

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:42:22