我有此查询具有此输出(正确):
15
44
查询:
SELECT T.numContribuinte,
T.numero,
SUM(C.valor - T.valorTotalChamadas) AS saldo
FROM telemovel T
JOIN CARREGAMENTO C ON C.numero = T.numero
GROUP BY T.numContribuinte, T.numero
HAVING saldo > 0
ORDER BY T.numero DESC
如果我删除单词sum,输出将是:
15
15
我的问题是
为什么没有总和会在输出中产生这种差异?
最佳答案
差异的原因是by design, MySQL allows columns in the SELECT to not be stated in the GROUP BY
or aggregate functions (MAX, MIN, COUNT, etc)。此功能的警告是返回的值是任意的-不能保证每次都保持一致。
支持与ANSI要求的一致,但是很少有人(仅我所知是SQLite)支持此行为。其他要求在GROUP BY
中提及该列或将其包含在聚合函数中。
关于mysql - 查询减法(SUM),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6702167/