-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHAVING.txt
94 lines (71 loc) · 4.95 KB
/
HAVING.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
****** SQL оператор HAVING ******
SQL оператор HAVING используется в сочетании с оператором GROUP BY, чтобы
ограничить группы возвращаемых строк только теми, чьё условие TRUE.
Синтаксис оператора HAVING в SQL:
*******************************************************************************
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
HAVING condition;
*******************************************************************************
Параметры:
- expression1, expression2, ... expression_n - выражения, которые не заключены
в агрегатную функцию должны быть
включены в предложение GROUP BY
в конце SQL оператора.
- aggregate_function - агрегатная функция, такая как SUM, COUNT, MIN, MAX или AVG.
- aggregate_expression - столбец или выражение, для которого будет использоваться
aggregate_function.
- tables - таблицы, из которых мы хотим получить записи. В предложении FROM должна
быть указана хотя бы одна таблица.
- WHERE conditions - необязательный. Это условия для выбора записей.
- HAVING condition - еще одно условие, применяемое только к агрегированным результатам,
чтобы ограничить группы возвращаемых строк. Только те группы,
состояние которых оценивается как true, будут включены в набор
результатов.
****** Использование функции SUM ******
Используем SQL функцию SUM для возврата названия department и total sales
(общих продаж в связанном отделе). SQL-запрос HAVING отфильтрует результаты так,
что будут возвращены только department с продажами более 1000 у.е.
*******************************************************************************
SELECT department, SUM(sales) AS "Total sales"
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000;
*******************************************************************************
****** Использование функции COUNT ******
Использовние SQL функцию COUNT, чтобы вернуть название department (отдела) и
количество employees (сотрудников в соответствующем отделе), sales (продажи)
которых составляют более 25000 у.е. в год. SQL-запрос HAVING будет фильтровать
результаты, так что будут возвращены только отделы с более чем 10 сотрудниками.
*******************************************************************************
SELECT department,
COUNT(*) AS "Number of employees"
FROM employees
WHERE salary > 25000
GROUP BY department
HAVING COUNT(*) > 10;
*******************************************************************************
****** Использование функции MIN ******
Использование SQL запроса с MIN для возврата department (названия отдела) и
MIN(salary) (минимальной зарплаты в отделе). SQL-запрос с HAVING вернет только
те department, где MIN(salary) превышает 25000 у.е.
*******************************************************************************
SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department
HAVING MIN(salary) > 25000;
*******************************************************************************
****** Использование функции MAX ******
Использование SQL запроса с MAX, чтобы вернуть department и максимальную salary
в отделе. SQL-предложение HAVING вернет только те department, чья максимальная
salary составляет менее 35000 у.е.
*******************************************************************************
SELECT department,
MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department
HAVING MAX(salary) < 35000;
*******************************************************************************