Если в результирующих наборах данных нужно выдавать агрегацию не по всем группам, а только по тем из них, которые отвечают некоторому условию, после предложения GROUP BY указывают предложение
HAVING <агрегатная функция> <отношение> <значение>
агрегатная функция − одна из функций MIN, MAX, AVG, SUM;
отношение − одна из операций отношения =, <>, <, >, <=, >=;
значение − константа, результат вычисления выражения или единичное значение, возвращаемое вложенным оператором SELECT.
Таким образом, после HAVING указываются условия, которые отличаются от условий, определяемых в предложении WHERE, одним важным обстоятельством: в них обязательно должна быть указана одна из агрегатных функций, в то время как в предложении WHERE такие функции указывать нельзя.
Агрегатные функции могут применяться как в выражении вывода результатов строки SELECT, так и в выражении условия обработки сформированных групп HAVING. В этом случае каждая агрегатная функция вычисляется для каждой выделенной группы. Значения, полученные при вычислении агрегатных функций, могут быть использованы для вывода соответствующих результатов или для условия отбора групп.
|
|
Пример. Построить запрос, который выводит среднюю стоимость заказа для каждого служащего из числа тех, у кого общая стоимость заказа превышает $30 000?
SELECT ID_SLZH, AVG(PRICE)
FROM ZAKAZY
GROUP BY ID_SLZH
HAVING SUM(PRICE) > 30 000.00
4.3.3 Предложение ORDER BY − определение сортировки
Строки результатов запроса, как и строки таблицы базы данных, не имеют определенного порядка. Но включив в инструкцию SELECT предложение ORDER BY, можно отсортировать результаты запроса.
Результирующий набор данных можно отсортировать с помощью предложения
ORDER BY <список_столбцов>
список_столбцов − содержит имена столбцов, по которым будет производиться сортировка. Если указаны два и более столбцов, первый столбец будет использован для глобальной сортировки, второй столбец для сортировки внутри группы, определяемой единым значением первого столбца, и т. д. Например, результаты следующего запроса отсортированы по двум столбцам, REGION, CITY.
Пример. Показать физические объемы продаж для каждого офиса, отсортированные в алфавитном порядке по названиям регионов и в каждом регионе - по названиям городов.
SELECT CITY, REGION, SALES
FROM OFFISY
ORDER BY REGION, CITY
В предложении ORDER BY можно выбрать возрастающий или убывающий порядок сортировки. По умолчанию данные сортируются в порядке возрастания. Чтобы сортировать их по убыванию, следует включить в предложение сортировки ключевое слово DESC, как это сделано в следующем примере.
Пример. Показать список офисов, отсортированный по фактическим объемам продаж в порядке убывания.
SELECT CITY, REGION, SALES
FROM OFFISY
ORDER BY SALES DESC