MySQL 中 SUM() 和 COUNT() 的区别

DJ 编码

我正在解决这个 Leetcode 问题(1173. Immediate Food Delivery I),我有点困惑为什么我在使用 COUNT() 时没有得到正确的答案。但是当我使用 SUM() 时,我得到了正确的答案。我为 SUM 和 COUNT 指定了一个条件,据我了解,当 order_date=customer_pref_delivery_date 时它们都应该添加或计数,这是否意味着该条件仅适用于 SUM()?

在此处输入图像描述

返回正确答案的查询(33.33):

select round(sum(order_date=customer_pref_delivery_date)/count(delivery_id)*100,2) as immediate_percentage 
from Delivery

返回错误答案的查询(100.00)

select round(count(order_date=customer_pref_delivery_date)/count(delivery_id)*100,2) as immediate_percentage 
from Delivery
大卫·瓦拉达雷斯 L.

所以基本上 SUM() 函数将返回其中表达式的总和,而 COUNT()将返回查询返回的元素或行的非 NULL 值的数量

在这种情况下,对于您的查询,您希望获得即时交货订单的百分比,因此您的实施公式是((<numberofimmediate>/<totalamount>)*100). 起初,您可能认为这COUNT()是正确的方法,但实际上这将返回查询中元素的完整数量,因此为避免这种情况,我们将使用SUM()仅累积完成条件的“那些”(首选和估计等于所以将返回 1)。如果您想以更直观的方式查看此内容,您可以执行以下操作:

SELECT delivery_id,order_date=customer_pref_delivery_date FROM Delivery

如果条件为真,这将返回交付 ID 和 1,如果条件为假,则返回 0。然后您可以使用这两个函数来查看每个函数的效果:

SELECT COUNT(order_date=customer_pref_delivery_date) FROM Delivery;
SELECT SUM(order_date=customer_pref_delivery_date) FROM Delivery;

COUNT()查询将再次返回比较中存在的完整数据量(计数 1 和 0)SUM()查询将返回比较中存在的所有值的总和(添加 1 和 0)

希望这能让您更好地了解正在发生的事情COUNT以及SUM您的查询

你可以检查这个小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章