У нас есть набор данных, случайная выборка показана ниже;
city|salesman_id|day|sale_qty
Chicago| 1 | 2017-01-16 | 24
Chicago| 1 | 2017-01-17 | 23
Chicago| 2 | 2017-01-16 | 20
NewYork| 1 | 2017-01-15 | 0
NewYork| 2 | 2017-01-15 | 10
NewYork| 1 | 2017-01-16 | 5
Здесь мы уверены, что данная комбинация salesman_id
и day
уникальна. Например, salesman_id =1
и day=2017-01-17
не могут встречаться дважды или более.
Теперь вопрос в том, чтобы найти среднее количество проданных товаров для каждого города. Моя первая попытка была;
SELECT city,
AVG(sale_qty)
FROM table
GROUP BY city
Первый подход дает ответ как;
City|avg_sales
Chicago| 22.33
NewYork| 5
В качестве интуиции я попробовал другой подход;
WITH CTE1(
SELECT city,
salesman_id,
SUM(sale_qty) AS total
FROM table
GROUP BY city, salesman_id)
SELECT city,
AVG(total)
FROM CTE1
GROUP BY city
Это дает ответ как;
city| avg_sales
Chicago| 33.5
NewYork| 7.5
Я вижу разницу в ответах. И мне очень хочется понять, в чем причина этой разницы root, а во-вторых, какие факторы следует тщательно учитывать при использовании предложения Group By
. Это поможет мне избежать слепого использования предложения Group By
в будущем. Заранее спасибо.