gpt4 book ai didi

mysql - 我一定要使用 SUM() 进行条件聚合吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:16 25 4
gpt4 key购买 nike

我之前看到专业程序员使用 SUM() (不是 COUNT()) 进行条件聚合。例如看看 this :

SELECT COUNT(field1), COUNT(field2), COUNT(field3),
SUM(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)
FROM (SELECT t.*
FROM mytable t
WHERE ...
ORDER BY id
LIMIT 500000
) rq;

有什么具体原因吗?实际测试过它,COUNT() 在有条件时也能正常工作。那么有什么区别:

SUM(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)

COUNT(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)

换句话说,为什么在上面的查询中有时使用 COUNT() 而有时使用 SUM() (第一个查询)

最佳答案

SUM(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)

COUNT(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)

是两种不同的东西,我不知道您如何得到相同的答案(可能是因为您使用的数据集)。但是在此设置中最好使用 COUNT,但您需要稍微更改代码

COUNT(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 END)

但是我认为它们中的任何一个都不会产生高性能影响。

关于mysql - 我一定要使用 SUM() 进行条件聚合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com