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

如何结合两张表计算各国FIDE≥1800棋手占总人数的百分比?

计算各国FIDE分≥1800棋手占比的SQL查询方案

你可以通过子查询+JOIN关联的方式,将两个查询的结果结合,直接计算目标占比。以下是具体实现:

SELECT
    ir.Country,
    ir.Total_Players,
    COALESCE(cp.qualified_players, 0) AS qualified_players,
    -- 计算百分比并格式化,保留两位小数
    ROUND(
        (COALESCE(cp.qualified_players, 0) * 100.0) / ir.Total_Players,
        2
    ) || '%' AS qualified_percentage
FROM
    international_ranking ir
LEFT JOIN
    (
        SELECT
            Country,
            COUNT(FIDE) AS qualified_players
        FROM
            chess_players
        WHERE
            FIDE >= 1800
        GROUP BY
            Country
    ) cp ON ir.Country = cp.Country;

关键细节说明:

  • 使用LEFT JOIN:确保即使某个国家没有FIDE分≥1800的棋手,也会被纳入结果,此时合格人数显示为0,占比也为0
  • COALESCE(cp.qualified_players, 0):处理子查询中无匹配的国家,避免NULL值干扰计算
  • *100.0:将整数除法转为浮点除法,保证百分比计算的精度
  • 字符串拼接语法适配:不同数据库拼接方式有差异,可按需替换:
    • MySQL/MariaDB:用CONCAT(ROUND(...), '%')替代ROUND(...) || '%'
    • SQL Server:用ROUND(..., 2) + '%'替代ROUND(...) || '%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:27:13