mysql - 查询中的减法 (SUM)

标签 mysql sql aggregate-functions

我有一个具有以下输出(正确)的查询:

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/

相关文章:

php - 从数据库值填充数组的最有效方法?

javascript - 当 x 值不完全匹配时,如何使用 d3.js 将多个折线图正确聚合/分组为一个总体图?

sql - 在查询中使用人类可读的常量

sql - 减去 vs 删除 oracle 中存在的地方

sql-server-2005 - SQL CLR 聚合函数错误处理

java - Jooq 如何区分或 countDistinct 多于一列

PHP - 对数组中的一个键使用函数

php - ajax调用php并从mysql表返回数据。热衷于制作这样的数据结构吗?

mysql - 这是一个好的数据库设计吗?

Mysql - 在 "one to many"表中搜索