【问题标题】:MYSQL Sum: How to excludes all instances either one of two other columns are nullMYSQL Sum:如何排除所有实例,其他两列之一为空
【发布时间】:2022-01-15 22:19:23
【问题描述】:

在 mysql 中,对于每个客户,我试图运行一个计数,排除所有实例,其他两列之一为空。如果没有两个都为 null 的实例,则返回 0。

考虑下表:

按 customer_id 分组,对于 22,它应该返回 9,因为被阻止和未批准的两行的唯一成本都是空总和到 9。对于 11,它应该返回 10,因为所有行都有双空值。对于 33,它应该返回 0,因为不存在阻塞和未批准都为空的实例。

你会如何建议这样做?

【问题讨论】:

    标签: mysql sql sum aggregation


    【解决方案1】:

    您可以使用条件聚合来做到这一点:

    SELECT customer_id,
           SUM(CASE WHEN blocked IS NULL AND unapproved IS NULL THEN cost ELSE 0 END) total
    FROM tablename
    GROUP BY customer_id;
    

    或者:

    SELECT customer_id,
           SUM(CASE WHEN COALESCE(locked, unapproved) IS NULL THEN cost ELSE 0 END) total
    FROM tablename
    GROUP BY customer_id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-17
      • 2014-03-20
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多