【问题标题】:Is there a way to add conditions into a COUNT()?有没有办法将条件添加到 COUNT() 中?
【发布时间】:2011-11-22 03:14:01
【问题描述】:

我想要做的是将 COUNT 添加到连接到多个表的查询中,但我只想在满足特定条件时对它进行计数。

我希望计数只计算具有 ReceivedDate 的行,如下所示:

COUNT(ReceivedDate = "0000-00-00 00:00:00", plpq.PurchaseOrderID) AS OrdersForPart

有没有什么方法可以在不使用子查询的情况下实现这一点?

【问题讨论】:

    标签: mysql select count


    【解决方案1】:

    假设您可能想要对其他行执行一些聚合,因此不能在 WHERE 子句中完全排除它们。

    COUNT(CASE 
            WHEN ReceivedDate = "0000-00-00 00:00:00" 
            THEN plpq.PurchaseOrderID 
          END) AS OrdersForPart
    

    如果不是这种情况,WHERE 子句当然是最好的选择。

    【讨论】:

    • 与标准选择相比,这没有提供准确的计数。
    • @Ben - 你记得COUNT(plpq.PurchaseOrderID) 只会计算plpq.PurchaseOrderID IS NOT NULL 的值吗?如果您不想要这种行为,请使用常量。
    【解决方案2】:

    只需使用 where。

    SELECT COUNT(plpq.PurchaseOrderID) AS OrdersForPart FROM ... WHERE ReceivedDate = '000-00-00 00:00:00'
    

    应该可以正常工作;)

    【讨论】:

      【解决方案3】:
      SELECT COUNT(plpq.PurchaseOrderID) 
        AS OrdersForPart 
        FROM table 
        WHERE ReceivedDate = "0000-00-00 00:00:00"
      

      【讨论】:

        猜你喜欢
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 2016-12-13
        相关资源
        最近更新 更多