sql - SUM() 正在计算所有值,而不是满足条件的值
问题描述
我有以下查询要写:
知道一支球队将至少从一名球员的出售中赚取给定球员的市场价值(WartoscRynkowa)并知道他的转会金额(KwotaTransferu),通过出售最高球员来计算球队将获得或损失多少转会机会(> = 2)(SzansaNaTransfer),为每个满足上述条件的玩家提供数据(玩家数据,金额),并为所有这些玩家提供价值;
我做了如下查询:
SELECT *, Imie+' '+Nazwisko AS ImieNazwisko,
(SELECT SUM(WartoscRynkowa) -SUM(KwotaTransferu)
FROM Beata.dane
) AS Result
FROM Beata.dane AS D
JOIN Beata.team AS T
ON D.NumerKoszulki = T.NumerKoszulki
WHERE SzansaNaTransfer >= 1
结果 130 是错误的,因为它也计算了玩家。应该是 33,因为 WartoscRynkowa(市值)的总和是 215 减去 KwotaTransferu(交易量)- 182 = 33
为什么查询还计算不满足条件“>=1”的玩家数量
编辑:我已经更新了查询并得到以下结果。如何总结另一列中的总值(我的意思是总结所有结果)?
SELECT T.Imie, T.Nazwisko,
(SELECT SUM(WartoscRynkowa) - SUM(KwotaTransferu)
FROM Beata.dane NAD
WHERE NAD.WartoscRynkowa = D.WartoscRynkowa
) AS Result
FROM Beata.dane AS D
JOIN Beata.team AS T
ON D.NumerKoszulki = T.NumerKoszulki
WHERE SzansaNaTransfer >= 2
解决方案
我发现这个问题很难理解,不理解列名是什么。我认为你不需要聚合来解决这个问题,但你需要一种计算总数的方法——窗口函数是一种方法:
SELECT (t.Imie + ' ' + t.Nazwisko) AS ImieNazwisko,
(WartoscRynkowa - KwotaTransferu) as Result,
SUM(WartoscRynkowa - KwotaTransferu) OVER () as overall_total
FROM Beata.dane D JOIN
Beata.team AS T
ON D.NumerKoszulki = T.NumerKoszulki
WHERE SzansaNaTransfer >= 2;
推荐阅读
- java - 更新新项目时如何自动向下滚动ListView控件-android studio
- list - 在球拍中,我如何返回一个列表,其中包含两个不同字典中出现的所有键
- node.js - 如何从 aws cognito 中的 authenticateUser 函数调用 sendMFACode 函数
- c# - 如何将数据向下添加到 IEnumerable 类型?
- cordova - 从 IONIC Native InAppBrowser 隐藏位置工具栏
- java - 找不到符号 - Spring Boot Maven 兄弟作为依赖
- java - ARCore Android SDK – 如何在 Transformable 节点上制作缩放动画?
- php - 有没有办法在不使用“../”的情况下包含多个目录的文件
- android - 无法使用 adb setprop 设置时区:未能设置属性“persist.sys.timezone”
- typescript - 当有类型定义时忽略 const