-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAVG.txt
98 lines (69 loc) · 5.59 KB
/
AVG.txt
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
****** SQL функция AVG ******
SQL функция AVG используется для возврата среднего значения выражения в операторе SELECT.
Синтаксис для функции AVG в SQL:
*******************************************************************************************
SELECT AVG(aggregate_expression)
FROM tables
[WHERE conditions];
*******************************************************************************************
Или синтаксис для функции AVG при группировке результатов по одному или нескольким столбцам.
*******************************************************************************************
SELECT expression1, expression2, ... expression_n,
AVG(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
*******************************************************************************************
Параметры:
- expression1, expression2, ... expression_n - выражения, которые не инкапсулированы в функции AVG
и должны быть включены в предложение GROUP BY в
конце SQL запроса.
- aggregate_expression - столбец или выражение, которое будет усреднено.
- tables - таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана
хотя бы одна таблица.
- WHERE conditions - необязательный. Это условия, которые должны быть выполнены для выбора записей.
****** AVG с одним выражением ******
Допустим, мы хотим узнать, какова средняя стоимость всех товаров, входящих в категорию Clothing.
*******************************************************************************************
SELECT AVG(cost) AS "Average Cost"
FROM products
*******************************************************************************************
В этом SQL запросе функции AVG присвоен псевдоним "Average Cost". В результате "Average Cost"
будет отображаться как имя поля при возврате набора результатов.
****** AVG с использованием SQL DISTINCT ******
Мы можем использовать SQL DISTINCT в функции AVG. Например, приведенная ниже инструкция SELECT
возвращает совокупную среднюю стоимость уникальных значений стоимости, в категории - Clothing.
*******************************************************************************************
SELECT AVG(DISTINCT cost) AS "Average Cost"
FROM products
WHERE category = 'Clothing';
*******************************************************************************************
Если бы у нас в таблице было два стоимостных значения в 25 у.е., то только одно из этих значений
было бы использовано при расчете функции AVG.
****** Использование формул (математеические выражения) ******
Еxpression (выражения), содержащееся в функции AVG, необязательно должно быть одним полем. Мы можем
использовать формулу. Например, получить среднюю прибыль за продукт. Средняя прибыль рассчитывается
как sale_price за вычетом cost.
*******************************************************************************************
SELECT AVG(sale_price - cost) AS "Average Profit"
FROM products;
*******************************************************************************************
Мы можем выполнить математическую операцию в функции AVG. Например, определить среднюю комиссию
как 10% от sale_price.
*******************************************************************************************
SELECT AVG(sale_price * 0.10) AS "Average Commission"
FROM products;
*******************************************************************************************
****** AVG и использование SQL GROUP BY ******
В некоторых случаях может потребоваться использовать запрос SQL GROUP BY с функцией AVG.
Например, чтобы вернуть название отдела и средние продажи (в связанном отделе).
*******************************************************************************************
SELECT department,
AVG(sales) AS "Average Sales"
FROM order_details
WHERE department > 10
GROUP BY department;
*******************************************************************************************
Поскольку в операторе SELECT указан один столбец, который не инкапсулирован в функции AVG,
мы должны использовать предложение GROUP BY, поэтому поле department должно быть указано в
разделе GROUP BY.