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

SQL技术问询:统计所有登记年份最爱节目始终一致的人员总数

解决思路与SQL实现

嘿,我来帮你搞定这个统计问题!你之前尝试嵌套查询没成功,大概率是没抓准核心逻辑——我们要找的是那些所有登记记录里最爱节目完全没换过的人对吧?

核心思路其实很简单:只要一个人所有登记记录里的最爱节目只有1种,那他就符合条件。基于这个思路,我们可以用两层查询来实现:

具体SQL代码

假设你的表名叫person_favorite_shows,字段分别是person_id(人员ID)、register_year(登记年份)、favorite_show(最爱节目),那可以这么写:

SELECT COUNT(DISTINCT person_id) AS consistent_people_total
FROM (
    -- 内层子查询:统计每个人的不同最爱节目数量
    SELECT person_id
    FROM person_favorite_shows
    GROUP BY person_id
    -- 筛选出只有1种最爱节目的人
    HAVING COUNT(DISTINCT favorite_show) = 1
) AS consistent_people;

逻辑拆解

  • 内层子查询:按person_id分组,用COUNT(DISTINCT favorite_show)统计每个人有多少种不同的最爱节目,再通过HAVING筛选出数量为1的人——这部分就是所有登记年份里最爱节目始终一致的人。
  • 外层查询:统计这些符合条件的人员总数,用COUNT(DISTINCT person_id)是为了避免极端情况下的重复计数(虽然内层已经分组,但多一层保障更稳妥)。

可选调整

如果你的需求里想排除只有1次登记记录的人(比如只统计至少有2年登记且节目没换的人),可以在内层的HAVING里再加一个条件:

HAVING COUNT(DISTINCT favorite_show) = 1 AND COUNT(register_year) >= 2

这样就可以精准筛选出有多次登记但节目始终没变的人啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:20:43