gpt4 book ai didi

sql - 计算sql中的非零值

转载 作者:行者123 更新时间:2023-12-02 04:10:35 26 4
gpt4 key购买 nike

我正在尝试计算每个单独列大于零的总次数,按驱动程序名称分组。现在我有;

SELECT drivername
, COUNT(over_rpm) AS RPMViolations
, COUNT(over_spd) AS SpdViolations
, COUNT(brake_events) AS BrakeEvents
FROM performxbydriverdata
WHERE over_rpm > 0
OR over_spd > 0
OR brake_events > 0
GROUP BY drivername

这给了我所有非零值,但我得到的显示为:

  • 鲍勃·史密斯 62 62 62
  • 内森·琼斯 65 65 65
  • 等等

我正在尝试获取每个单独值中的非零计数。每个违规行为应单独分组。

最佳答案

使用NULLIF将零改为NULL,count忽略NULL

SELECT drivername,
COUNT(NULLIF(over_rpm,0)) AS RPMViolations,
COUNT(NULLIF(over_spd,0)) AS SpdViolations,
COUNT(NULLIF(brake_events,0)) AS BrakeEvents
FROM performxbydriverdata
GROUP BY drivername;

您也可以删除该组中的 WHERE 子句以提高性能
OR 条件经常因为匹配好的索引而运行得很糟糕

使用 HAVING (按照其他答案)将删除所有 3 个聚合都为零的任何行,这对您可能有用也可能没有用。如果需要,您可以添加此内容。也就是说,WHERE 意味着至少一行具有非零值,因此您不需要同时使用 WHERE 和 HAVING 子句

关于sql - 计算sql中的非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775115/

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