SQL | объединение результатов двух запросов в одну таблицу - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в SQL ....

У меня есть таблица, в которой в одном столбце "status" содержится список утвержденных / отклоненных заказов. Как мне написать запрос, который дает результат двух столбцов: «Всего утвержденных заказов», «Всего заказов» в одной таблице?

Я знаю, как получить эти результаты в двух отдельных запросах, а именно:

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

SELECT COUNT(status) FROM orders;

Но не знаете, как это сделать для одной таблицы / результата

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Вы можете объединить их как подзапросы следующим образом:

SELECT
(SELECT COUNT(status) FROM orders WHERE status = 'Approved') AS 'Approved',
(SELECT COUNT(status) FROM orders) AS 'All Orders
;
0 голосов
/ 01 мая 2020

Вы можете выполнить условное агрегирование:

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
...