我是SQL新手。...
我有一张表格,其中一栏“状态”列出了批准/拒绝的订单清单。如何编写一个查询,该查询给出两列的结果:一张表中的“总批准订单”,“总订单”?
我知道如何在两个单独的查询中提取这些结果:
SELECT COUNT(status) FROM orders WHERE status = 'Approved';
SELECT COUNT(status) FROM orders;
但是不确定如何针对一个表/结果
答案 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
;