MySQL函数计数/最小值/最大值问题
我对sum运行以下查询,然后得到完全相同的答案 SQL 1::MySQL函数计数/最小值/最大值问题,mysql,sql,sum,average,Mysql,Sql,Sum,Average,我对sum运行以下查询,然后得到完全相同的答案 SQL 1:: Select L_PARTKEY,sum(L_LINENUMBER) As A From lineitem Inner Join orders On orders.O_ORDERKEY = lineitem.L_ORDERKEY WHERE O_WEEKDAY='Tuesday' Group by L_PARTKEY SQL 2:: SELECT sum(IF(orders.O_WEEKDAY='Tuesday',L_L
Select L_PARTKEY,sum(L_LINENUMBER) As A
From lineitem
Inner Join orders On orders.O_ORDERKEY = lineitem.L_ORDERKEY
WHERE O_WEEKDAY='Tuesday'
Group by L_PARTKEY
SQL 2::
SELECT sum(IF(orders.O_WEEKDAY='Tuesday',L_LINENUMBER, 0)) As 'Tuesday'
FROM lineitem
INNER JOIN orders ON orders.O_ORDERKEY = lineitem.L_ORDERKEY
GROUP BY lineitem.L_PARTKEY
但是当我使用AVG/COUNT/MIN/MAX函数而不是SUM函数运行上述查询时,两个查询都会给出不同的输出 假设您拥有以下数据:
monday 1
tuesday 2
tuesday 3
第一个查询查看最后两行。总和为5,平均值为2.5,行数为2
第二个查询将查看所有行。对于第一行,它将数字1替换为0。总数仍然是5,但平均值现在是5/3,行数是3
对于总和,值为0的额外行无关紧要。但是带0的额外行确实会影响其他聚合计数、最小值、最大值和平均值。尝试一些交叉检查,例如,在不使用聚合函数的情况下查看两个查询中有多少记录以及哪些记录显示一些样本数据集如果没有这些,我们将无法帮助您,您只能得到我们的建议。。。因此,如果
if()
函数的最后一个参数从0
更改为NULL
,这在逻辑上是错误的,那么这两个查询应该返回相同的结果。是的,我从0更改为NULL,现在返回相同的结果