рассчитывать на основе store_A и всех магазинов - PullRequest
0 голосов
/ 18 июня 2020

Я хотел бы подсчитать:

  • все count_products для store_A
  • всего count_products которые включает все store_id даже store_A как total_count_products

Main_table

date         store_id  count_prroducts
2019-01-01   A         13
2019-01-01   B         34
2019-01-01   C         63
2019-01-01   D         10

Output_table

date          store_A_count_products    total_count_products
2019-01-0     13                        120 

1 Ответ

3 голосов
/ 18 июня 2020

Начните с выбора столбца даты без каких-либо изменений.

Для store_A_count_products в основном вам нужно добавить все count_products всякий раз, когда store_id равен A. Вы можете сделать это с помощью оператора case :

   case when store_id = 'A' then count_products else 0 end

Это в основном ситуация IF / ELSE, и она вернет 0 для любой строки, которая не имеет A в столбце store_id.

Если вы заключите это в SUM (), вы сложите все строки вместе.

Для total_count_products вам просто нужно обернуть SUM () вокруг count_products. В результате будут сложены все строки независимо от статуса любого другого столбца.

Наконец, вам нужно сгруппировать по столбцу даты. Группировка по - это средство для разделения агрегированных данных по неагрегированным столбцам.

Причина, по которой это работает, заключается в том, что она дает вам одну строку для каждой даты, суммарное количество продуктов для магазина A и суммарное количество всех продукты.

Select 
    date,
    Sum(case when store_id = 'A' then count_products else 0 end) as store_A_count_products,
    SUM(count_products) as total_count_products
From main_table
Group by date;
...