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

球员转会SQL查询SUM计算异常及结果汇总方法咨询

问题分析与解决方案

一、为什么原查询会统计所有球员数据?

你的第一个查询里的子查询(SELECT SUM(WartoscRynkowa) - SUM(KwotaTransferu) FROM Beata.dane )是完全独立于外部查询的——它没有和外部的WHERE SzansaNaTransfer >= 1条件建立关联,所以不管外部筛选出哪些符合条件的球员,这个子查询都会计算整个Beata.dane表的所有球员的价值与转会费差额总和,自然得到了错误的130,而不是你期望的符合条件球员的总和33。

另外,你原查询里的WHERE SzansaNaTransfer >= 1和需求里的“出售转会概率≥2”也不一致,这点也需要修正。

二、修正查询:获取每位符合条件球员的信息、个人盈亏及总盈亏

要同时得到每位符合条件球员的信息、个人盈亏(单球员的市场价值减转会费),以及所有符合条件球员的总盈亏,最简洁的方式是用窗口函数SUM() OVER()——它能在保留每条球员记录的同时,直接计算出符合条件数据集的汇总值:

SELECT 
    T.Imie,
    T.Nazwisko,
    T.NumerKoszulki,
    D.WartoscRynkowa,
    D.KwotaTransferu,
    D.SzansaNaTransfer,
    -- 计算单球员的个人盈亏
    D.WartoscRynkowa - D.KwotaTransferu AS OsobistyZyskStrata,
    -- 计算所有符合条件球员的总盈亏(无分区的窗口函数会汇总当前筛选出的全部数据)
    SUM(D.WartoscRynkowa - D.KwotaTransferu) OVER() AS CalkowityZyskStrata
FROM Beata.dane AS D
JOIN Beata.team AS T ON D.NumerKoszulki = T.NumerKoszulki
WHERE D.SzansaNaTransfer >= 2;

这个查询会输出:

  • 所有SzansaNaTransfer >= 2的球员的完整信息
  • 每个球员自己的盈亏金额(OsobistyZyskStrata列)
  • 在每一行都显示所有符合条件球员的总盈亏(CalkowityZyskStrata列,值为你期望的33)

三、关于你更新后的查询的问题

你更新后的查询里的子查询(SELECT SUM(WartoscRynkowa) - SUM(KwotaTransferu) FROM Beata.dane NAD WHERE NAD.WartoscRynkowa = D.WartoscRynkowa )其实是在计算和当前球员市场价值相同的所有球员的盈亏总和,这应该不是你想要的结果。如果只是想得到单球员的盈亏,直接用D.WartoscRynkowa - D.KwotaTransferu即可,不需要嵌套子查询。

另一种实现方式:用CTE先筛选再计算

如果你不习惯窗口函数,也可以用公共表表达式(CTE)先筛选出符合条件的球员,再关联计算总盈亏:

WITH WybraneZawodnicy AS (
    SELECT 
        T.Imie,
        T.Nazwisko,
        D.WartoscRynkowa,
        D.KwotaTransferu,
        D.SzansaNaTransfer,
        D.WartoscRynkowa - D.KwotaTransferu AS OsobistyZyskStrata
    FROM Beata.dane AS D
    JOIN Beata.team AS T ON D.NumerKoszulki = T.NumerKoszulki
    WHERE D.SzansaNaTransfer >= 2
)
SELECT 
    *,
    (SELECT SUM(OsobistyZyskStrata) FROM WybraneZawodnicy) AS CalkowityZyskStrata
FROM WybraneZawodnicy;

这个写法和窗口函数的结果完全一致,只是实现逻辑不同。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:01:38