【问题标题】:Getting a count of a subset of GROUP BY records获取 GROUP BY 记录子集的计数
【发布时间】:2018-02-28 01:28:24
【问题描述】:

我有一个邮件分类帐表,我正在尝试查询返回百分比。我正在执行 GROUP BY 以获取基于 order_no、county 和 zip_code 的唯一记录。

SELECT, COUNT(*) as TotalMailed, COUNT(*) (WHERE Returned = 1) as ReturnedMailed, Order_No, Zip_Code,County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County

我正在获取每个记录分组的正确计数,但是我需要获取已返回设置为 true 的分组记录子集的计数。

我正在运行 SQL Server,所以我确实可以使用 OVER 和 PARTITION,但是,我也很想知道在 Postgres/MySQL 中处理它的正确方法。

【问题讨论】:

  • 使用COUNT(CASE WHEN Returned = 1 THEN 1 END)

标签: sql sql-server count subquery


【解决方案1】:

在 SQL Server 中,您可以使用条件聚合。我通常使用SUM(CASE . . . )

SELECT COUNT(*) as TotalMailed,
       SUM(CASE WHEN Returned = 1 THEN 1 ELSE 0 END) as ReturnedMailed,
       Order_No, Zip_Code, County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County;

如果Returned 只取值 1 和 0/NULL,那么你可以这样做:

SELECT COUNT(*) as TotalMailed,
       SUM(Returned) as ReturnedMailed,
       Order_No, Zip_Code, County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2013-06-27
    • 2016-05-15
    • 2013-06-25
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多