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

如何用SQL查询特定年龄猜测值出现次数最少的人员记录

解决方法:获取被猜测为特定值次数最少的人员记录

核心思路

先统计所有人员被猜为目标值的次数(包含从未被猜测的0次),再筛选出次数等于最小值的记录。

完整SQL(以MySQL为例,其他数据库逻辑通用)

WITH NameGuessCounts AS (
    SELECT 
        t.Name,
        COUNT(CASE WHEN t.AgeGuess = 36 THEN 1 END) AS GuessedToBe36Count
    FROM your_table_name t
    GROUP BY t.Name
)
SELECT 
    Name,
    GuessedToBe36Count
FROM NameGuessCounts
WHERE GuessedToBe36Count = (SELECT MIN(GuessedToBe36Count) FROM NameGuessCounts);

代码解释

  1. 统计次数的CTE(NameGuessCounts)

    • 通过GROUP BY Name自动实现姓名去重,确保每个姓名单独分组。
    • 用COUNT(CASE WHEN AgeGuess = 36 THEN 1 END)计算次数:符合条件的记录计数1,不符合的返回NULL,而COUNT会忽略NULL,因此从未被猜为36的人员次数会自动显示为0。
  2. 筛选最小次数的记录

    • 子查询(SELECT MIN(GuessedToBe36Count) FROM NameGuessCounts)获取所有人员中的最小猜测次数。
    • 主查询筛选出次数等于该最小值的记录,即可得到所有次数最少的人员。

兼容老版本数据库的写法(无CTE)

如果你的数据库不支持CTE(比如MySQL 5.x版本),可以用嵌套子查询实现:

SELECT 
    Name,
    GuessedToBe36Count
FROM (
    SELECT 
        t.Name,
        COUNT(CASE WHEN t.AgeGuess = 36 THEN 1 END) AS GuessedToBe36Count
    FROM your_table_name t
    GROUP BY t.Name
) AS temp
WHERE GuessedToBe36Count = (SELECT MIN(GuessedToBe36Count) FROM (
    SELECT 
        t.Name,
        COUNT(CASE WHEN t.AgeGuess = 36 THEN 1 END) AS GuessedToBe36Count
    FROM your_table_name t
    GROUP BY t.Name
) AS temp2);

注意事项

  • 替换your_table_name为你实际使用的表名。
  • 若要查询其他目标猜测值,只需把SQL中的36替换成对应的数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:50:33