Начните с выбора столбца даты без каких-либо изменений.
Для 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;