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

SQL Server使用COUNT与WHERE时如何按赛季计算外籍球员占总人数的百分比

解决方法

你原先将国籍过滤条件写在WHERE子句中,会直接排除所有美国籍球员的记录,因此无法统计到单赛季总球员数量。改用条件聚合的写法即可同时拿到外籍球员数和总球员数,无需额外子查询:

SELECT 
    season,
    COUNT(DISTINCT CASE WHEN country <> 'USA' THEN player_name END) AS 'No. of Foreign Players',
    COUNT(DISTINCT player_name) AS 'Total Players',
    COUNT(DISTINCT CASE WHEN country <> 'USA' THEN player_name END) * 100.0 / COUNT(DISTINCT player_name) AS 'Foreign Player Percentage (%)'
FROM nbastats
GROUP BY season

逻辑说明

  • 赛季分组逻辑和你原有查询完全一致,返回的外籍球员数量也和你之前的查询结果匹配
  • 计数时通过CASE语句做条件判断,仅统计非美国籍球员的数量,总球员数直接统计全量去重的球员即可
  • 乘以100.0是为了避免SQL Server整数除法导致的精度丢失,如果需要固定保留指定位数的小数,可以在外层嵌套ROUND()函数,示例(保留2位小数):
    ROUND(COUNT(DISTINCT CASE WHEN country <> 'USA' THEN player_name END) * 100.0 / COUNT(DISTINCT player_name), 2) AS 'Foreign Player Percentage (%)'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:45:01