首页 > 解决方案 > 如何计算数据库列结果并将它们分组以实现可管理的输出

问题描述

我正在尝试以一种简单的方式进行计算,以使我能够管理以下数据库表:

code ----- companyID ----- bought----- returned
abcd ----- 32        ----- 1       ----- 0
efgh ----- 32        ----- 1       ----- 1
ijkl ----- 58        ----- 1       ----- 1
mnop ----- 65        ----- 1       ----- 0

我正在尝试使用此查询获得所需的(以下结果)

SELECT COUNT(*) AS bought, companyID FROM table 
WHERE bought= 1 AND refunded = 0

UNION ALL 
SELECT COUNT(*) AS returned, companyID FROM table 
WHERE returned= 1

GROUP BY companyID

这是错误的。

这是所需的输出:

companyID ----- codesTotal ----- boughtTotal ----- returnedTotal
32        ----- 2          ----- 2            ----- 1
58        ----- 1          ----- 1            ----- 1 
65        ----- 1          ----- 1            ----- 0 

companyID 的行数必须等于 buyTotal。

如何编辑代码以实现此目的?

标签: mysqlsql

解决方案


这是你想要的吗?

select companyid,
       count(*) as num_codes,
       sum(bought) as num_bought,
       sum(returned) as num_returned
from t
group by companyid;

推荐阅读