-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAggregate_functions.py
More file actions
118 lines (110 loc) · 4.86 KB
/
Aggregate_functions.py
File metadata and controls
118 lines (110 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/usr/bin/env python
# coding: utf-8
# В данном файле будет представлен код SQL, с кратким описанием задачи.
# Динамика трат клиентов
SELECT
BuyDate
MIN(Rub) as MinCheck,
MAX(Rub) as MaxCheck,
AVG(Rub) as AvgCheck
FROM checks
GROUP BY BuyDate
ORDER BY
BuyDate DESC
LIMIT 10
# Необходимо найти клиентов которые приносят большую прибыль. Сумма покупок от 10 000 рублей.
SELECT
UserID,
SUM(Rub) as Revenue
FROM checks
GROUP BY
UserID
HAVING
Revenue > 10000
ORDER BY
UserID DESC
LIMIT 10
# Представим, что к вам пришел менеджер с проблемой:
# за последний месяц он наблюдает снижение выручки в некоторых регионах и
# хочет определить возможную причину этого снижения.
# Необходимо сгруппировать данные о выручке по странам и найти среди них топ-5 стран по величине выручки,
# так как интереснее всего нам будет смотреть именно на данные этих стран.
SELECT
Country,
SUM(UnitPrice * Quantity) AS Revenue
FROM retail
GROUP BY
Country
ORDER BY
Revenue DESC
LIMIT 5
# В качестве более подробного описания выручки по странам можно посмотреть,
# каково среднее количество купленных товаров и средняя цена товара в покупках,
# совершенных в определенной стране.
# Посчитайте среднее число купленных товаров по стране и среднюю цену товара, с
# группировав данные по странам и используя агрегирующую функцию,
# и отсортируйте по убыванию средней цены товара.
# Значение 'Manual' ключают данные об удаленных из чека позициях.
# Для получения правильного ответа такие строки необходимо отфильтровать.
SELECT
Country,
AVG(Quantity) as AvgQuanitiy,
AVG(UnitPrice) as AvgPrice
FROM retail
GROUP BY Country
HAVING Description != 'Manual'
ORDER BY
AvgPrice DESC
# Теперь посмотрим на динамику общей суммы выручки по месяцам.
# Значение 'Manual' ключают данные об удаленных из чека позициях.
# Для получения правильного ответа такие строки необходимо отфильтровать.
SELECT
SUM(UnitPrice * Quantity) AS Revenue,
toStartOfMonth(InvoiceDate) AS MONTH_rev
FROM retail
GROUP BY
MONTH_rev
HAVING
Description != 'Manual'
ORDER BY
Revenue DESC
LIMIT 10
# Давайте посмотрим на динамику выручки от покупателей, которые в среднем покупают самые дорогие товары.
# В качестве целевой метрики будем использовать среднюю цену купленного товара (UnitPrice),
# данные посмотрим за март 2011 года.
# Значение 'Manual' ключают данные об удаленных из чека позициях.
# Для получения правильного ответа такие строки необходимо отфильтровать.
SELECT
CustomerID,
AVG(UnitPrice) as AvgPrice,
toStartOfMonth(InvoiceDate) as date_info
FROM retail
WHERE date_info = '2011-03-01'
GROUP BY
CustomerID,
date_info
HAVING
Description != 'Manual'
ORDER BY
AvgPrice DESC
LIMIT 100
# Как изменилось среднее, минимальное и максимальное количество купленного товара в стране
# с наибольшей выручкой в течение последних месяцев?
# Значение 'Manual' ключают данные об удаленных из чека позициях.
# Для получения правильного ответа такие строки необходимо отфильтровать.
SELECT
SUM(UnitPrice * Quantity) AS Revenue,
toStartOfMonth(InvoiceDate) AS MONTH_rev,
AVG(Quantity) AS Avg_q,
MIN(Quantity) AS MIN_q,
MAX(Quantity) AS MAX_q
FROM retail
WHERE
Description != 'Manual' and Country == 'United Kingdom'
GROUP BY
MONTH_rev
HAVING
Quantity > 0
ORDER BY
Avg_q DESC
LIMIT 30