MySQL函数COUNT / MIN / MAX问题

时间:2014-06-08 04:56:58

标签: mysql sql sum average

我运行以下查询求和,然后我得到完全相同的答案

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_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运行上述查询时,两个查询都会给出不同的输出。

1 个答案:

答案 0 :(得分:2)

假设您有以下数据:

monday    1
tuesday   2
tuesday   3

您的第一个查询会查看最后两行。总和为5,平均值为2.5,行数为2。

您的第二个查询会查看所有行。对于第一行,它将数字1替换为0.总和仍为5,但平均值现在为5/3,行数为3.

总之,值为0的额外行无关紧要。但是额外的0行会影响其他聚合次数count,min,max和avg。