
Лабораторные_задания / Лабораторная работа 6
.docxЛабораторная работа №11. Агрегирование данных. Статистические функции SQL
Цель работы
Научиться осуществлять выборку и статистическую обработку информации из базы данных.
Указания к работе
В стандарте языка SQL определен набор средств, позволяющих расширить возможности обработки данных (помимо возможности использования вычислимых полей). Это так называемые SQL-функции, которые можно применить, например, для статистической обработки.
Ниже приведен список основных SQL-функций и краткое их описание (в различных СУБД могут поддерживаться и другие функции, например RAND()):
-
SUM - сумма значений в столбце,
-
AVG - среднее значение в столбце,
-
MAX - самое большое значение в столбце,
-
MIN - самое малое значение в столбце,
-
COUNT - число значений в столбце.
Для функций SUM и AVG рассматриваемый столбец должен содержать числовые значения. Функции MAX и MIN могут обрабатывать и строковые данные. Функция COUNT не привязана к типам данных, поскольку вычисляет только количество не пустых строк.
Например:
SELECT SUM(count) AS 'Всего единиц на складе' FROM goods;
SELECT COUNT(count) AS 'Всего наименований' FROM goods;
В качестве аргумента каждая из функций принимает одно значение - имя столбца таблицы или вычислимое выражение. Такое выражение может быть сколь угодно сложным, но не должно содержать SQL-функций, поскольку вложенность SQL-функций не допускается. Сами SQL-функции можно использовать в вычислимых полях.
Например:
SELECT SUM(coast*count) AS Итого FROM goods;
SELECT SUM(count) AS 'Всего единиц на складе:', SUM(cost*count) AS 'На общую сумму:', AVG(cost) AS 'При средней цене:' FROM goods;
Аргументу всех функций, кроме COUNT(*), может предшествовать ключевое слово DISTINCT.
Например, приведенный ниже запрос вернет количество производителей, чьи товары представлены в прайсе:
SELECT COUNT(DISTINCT vendor) FROM goods;
Специальная функция COUNT(*) служит для подсчета всех без исключения строк в таблице (включая дубликаты).
SELECT COUNT(*) FROM goods;
В результирующем наборе простого запроса SELECT нельзя получить столбцы, не являющиеся аргументами SQL-функций. Например, в одном запросе нельзя получить информацию о производителях (их коде) и количестве товаров, поставляемых ими:
SELECT vendor, COUNT(vendor) FROM goods;
В результате выполнения будет выведено сообщение об ошибке, поскольку запрос подразумевает одновременно вывод множества значений для поля vendor и единственного результирующего значения, возвращаемого функцией COUNT. Такого рода запросы реализуются при использовании фразы GROUP BY (лаб.работа № 7).
Задания к работе
-
Составить и выполнить по 2-3 простых запроса с использованием каждой из SQL-функций
-
Составить и выполнить по 2-3 запроса на объединение таблиц с использованием каждой из SQL-функций.