我有此查询具有此输出(正确):

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/

10-12 03:49