SQL |将两个查询的结果合并到一个表中

时间:2020-05-01 00:28:08

标签: sql group-by count pivot

我是SQL新手。...

我有一张表格,其中一栏“状态”列出了批准/拒绝的订单清单。如何编写一个查询,该查询给出两列的结果:一张表中的“总批准订单”,“总订单”?

我知道如何在两个单独的查询中提取这些结果:

SELECT COUNT(status) FROM orders WHERE status = 'Approved';

SELECT COUNT(status) FROM orders;

但是不确定如何针对一个表/结果

2 个答案:

答案 0 :(得分:0)

您可以进行条件聚合:

select
    sum(case when status = 'Approved' then 1 else 0 end) total_orders_approved,
    count(*) total_orders
from orders

取决于您的数据库,可能会有较短的语法。在MySQL中:

select
    sum(status = 'Approved') total_orders_approved,
    count(*) total_orders
from orders

在Postgres中:

select
    Count(*) filter(where status = 'Approved') total_orders_approved,
    count(*) total_orders
from orders

答案 1 :(得分:0)

您可以按以下方式将它们组合为子查询;

SELECT
(SELECT COUNT(status) FROM orders WHERE status = 'Approved') AS 'Approved',
(SELECT COUNT(status) FROM orders) AS 'All Orders
;
相关问题