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

SQLite中如何计算各国籍value_eur占总value_eur的比例

原SQL报错原因
  • CTE中sum(value_eur)聚合计算结果未设置别名,外层查询直接引用value_eur字段会触发字段不存在的报错
  • 占比计算逻辑错误:窗口函数添加了partition by nationality分区规则,由于CTE已经完成按国籍聚合、每个国籍仅返回1行数据,分区后每个分区的总和就是当前国籍自身的汇总值,计算出的比例恒为1,无法得到占全表总价值的百分比
修正后可运行SQL
WITH CTE AS (
    SELECT
        nationality,
        SUM(value_eur) AS nation_total_value
    FROM Fifadf
    GROUP BY nationality
)
SELECT
    nationality,
    nation_total_value AS value_eur,
    ROUND(1.0 * nation_total_value / SUM(nation_total_value) OVER (), 4) AS prop
FROM CTE

若需要直接返回百分比格式,可以把prop字段的计算逻辑调整为CONCAT(ROUND(100.0 * nation_total_value / SUM(nation_total_value) OVER (), 2), '%')

样例数据校验

按照给出的测试数据计算:
全表总value_eur总和为1000+2000+2000+3000+3000=11000,运行修正后SQL返回结果如下:

  • n1:汇总value_eur为3000,占比27.27%
  • n2:汇总value_eur为2000,占比18.18%
  • n3:汇总value_eur为6000,占比54.54%
    和期望输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:48:15