如何基于另一列的去重计数分组,筛选唯一团队数大于3的组
解决方法:筛选唯一团队数大于3的分组
没问题,咱们可以通过SQL的分组聚合+筛选来实现这个需求,具体思路和代码如下:
核心思路
先按GroupNumber对数据进行分组,统计每个分组里不重复的TeamName数量,再筛选出这个数量大于3的分组即可。
基础SQL语句
假设你的表名叫team_goals(记得替换成你实际的表名),执行以下语句就能得到符合条件的分组:
SELECT GroupNumber FROM team_goals GROUP BY GroupNumber HAVING COUNT(DISTINCT TeamName) > 3;
代码解释
GROUP BY GroupNumber:将数据按分组编号进行聚合,把同一组的所有行归为一组COUNT(DISTINCT TeamName):统计每个分组里唯一的团队名称数量,避免同一团队多次出现重复计数HAVING COUNT(DISTINCT TeamName) > 3:对聚合后的结果进行筛选,只保留唯一团队数大于3的分组(这里HAVING是专门用来过滤聚合结果的,不能用WHERE替代)
扩展:同时查看唯一团队数
如果你想同时看到每个符合条件分组的具体唯一团队数量,可以调整查询语句:
SELECT GroupNumber, COUNT(DISTINCT TeamName) AS UniqueTeamCount FROM team_goals GROUP BY GroupNumber HAVING COUNT(DISTINCT TeamName) > 3;
执行后会返回类似这样的结果:
| GroupNumber | UniqueTeamCount |
|---|---|
| 2 | 4 |
内容的提问来源于stack exchange,提问作者sara
相关产品推荐
相关产品推荐

