SQL вычисляет сумму и количество различных значений в группе - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу рассчитать

(1) общую сумму продаж

(2) количество отдельных магазинов для продукта

в одном запросе, если это возможно.Предположим, у нас есть данные:

+-----------+---------+-------+--------+
|   store   | product | month | amount |
+-----------+---------+-------+--------+
| Anthill   | A       |     1 |      1 |
| Anthill   | A       |     2 |      1 |
| Anthill   | A       |     3 |      1 |
| Beetle    | A       |     1 |      1 |
| Beetle    | A       |     3 |      1 |
| Cockroach | A       |     1 |      1 |
| Cockroach | A       |     2 |      1 |
| Cockroach | A       |     3 |      1 |
| Anthill   | B       |     1 |      1 |
| Beetle    | B       |     2 |      1 |
| Cockroach | B       |     3 |      1 |
+-----------+---------+-------+--------+

Я попробовал это без удачи:

select 
 [product]
,[month]
,[amount]
,cnt_distinct_stores = count(distinct(stores))
from dbo.temp
group by 
 [product]
,[month]
order by 1,2

Возможна ли любая комбинация предложения GROUP BY с оконными функциями, например SUM(amount) OVER(partition by [product],[month] ORDER BY [month] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

1 Ответ

0 голосов
/ 12 декабря 2018

Попробуйте

SELECT product,
       SUM(amount),
       COUNT(DISTINCT store)
FROM dbo.temp
GROUP BY product
...