SQL: Как я могу получить общее количество для различных значений в столбце? - PullRequest
0 голосов
/ 04 апреля 2020

SQL Начинающий здесь. В настоящее время работает над проблемой с mySQL и Postgre SQL.

Я хотел бы получить общее количество для каждого приоритета заказа (Not_Specified, Low, Medium, High, Critical) для каждого состояния ,

Например, я хотел бы получить столбец для Техаса с номером для каждой категории приоритета заказа, а затем один для следующего штата и так далее. Каждый приоритет заказа будет иметь свой собственный столбец подсчета в каждом штате.

Это мой текущий запрос ниже. Могу ли я использовать подзапрос или мне нужно использовать оконную функцию?

SELECT 
    Customer_ID, City, State_or_Province, Order_Date, Order_Priority, 
    ROW_NUMBER() OVER(ORDER BY City ASC, State_or_Province ASC) AS Row_N,
    COUNT(Order_Priority) OVER (Partition BY State_or_Province) AS State_Total_count

FROM SuperStore_Main 

enter image description here

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Вы, похоже, ищете условную агрегацию.

В MySQL:

select
    state_or_province,
    sum(order_priority = 'Not_Specified') cnt_not_specified,
    sum(order_priority = 'Low')           cnt_low
    sum(order_priority = 'Medium')        cnt_medium
    sum(order_priority = 'High')          cnt_not_high
    sum(order_priority = 'Critical')      cnt_critical
from superstore_main
group by state_or_province

В Postgres:

select
    state_or_province,
    count(*) filter(where order_priority = 'Not_Specified') cnt_not_specified,
    count(*) filter(where order_priority = 'Low')           cnt_low
    count(*) filter(where order_priority = 'Medium')        cnt_medium
    count(*) filter(where order_priority = 'High')          cnt_not_high
    count(*) filter(where order_priority = 'Critical')      cnt_critical
from superstore_main
group by state_or_province
1 голос
/ 04 апреля 2020

Этот запрос PostgreSQL разбивает количество записей по каждой комбинации состояния и приоритета заказа:

  SELECT State_or_Province
       , Order_Priority
       , COUNT(*) tally
    FROM SuperStore_Main 
GROUP BY State_or_Province
       , Order_Priority
       ;
...