
Лабораторная работа №3/SQL
Условные операторы. Агрегатные функции SQl.
Оператор LIKE применяется для задания маски поиска символьных выражений.
Пример запроса. Вывести заказчиков, чьи фамилии начинаются с "G"
SELECT * FROM customer WHERE cname LIKE "G*";
При этом * обозначает, что после символа G может находиться любое количество любых символов.
Знак ? (вопросительный знак), используемый в маске, заменяет один символ:
SELECT * FROM sales WHERE sname LIKE "P??l";
Это означает, что в середине фамилии могут находиться два любых символа.
Ключевое слово NULL в запросах обозначает неизвестное значение.
Пример запроса. Найти заказчиков, у которых нет данных о местожительстве.
SELECT * FROM customer WHERE city IS NULL
Нельзя писать в запросе city=NULL. Логические операции с NULL приводят также к неизвестному значению. Поэтому для сравнения с NULL используется ключевое слово IS. При этом в запросах можно применять любые логические выражения.
Найти заказчиков, имеющих данные о местожительстве
SELECT * FROM customer WHERE NOT city IS NULL
Агрегатные функции – это функции, интегрирующие данные нескольких записей таблицы. К агрегатным функциям относятся следующие: сумма, среднее, максимальное и минимальное значения.
Пример запроса. Определить сумму всех покупок.
SELECT SUM(amt) FROM orders; Использование агрегатной функции SUM
Определить среднюю цену покупки
SELECT AVG(amt) FROM orders; Использование агрегатной функции AVG
Функции SUM и AVG используются только с числовыми полями.
К агрегатным функциям относится также и подсчет количества записей.
Пример запроса. Определить, сколько всего совершено покупок.
SELECT COUNT(*) FROM orders
В качестве аргумента функции COUNT может стоять и любое из полей таблицы orders.
Примеры использования других агрегатных функций:
SELECT MAX(rating) FROM customer; Определить максимальный рейтинг заказчиков.
SELECT MIN(comm) FROM sales. Определить минимальную долю комиссионных продавцов.
Агрегатные функции могут выполняться отдельно для некоторых подмножеств таблицы. Условия формирования подмножеств определяются ключевыми словами GROUP BY
Пример запроса. Вывести наибольшие суммы покупок, совершенные каждым продавцом.
SELECT snum,MAX(amt) FROM orders GROUP BY snum;
Возможно перечисление нескольких полей после ключевых слов GROUP BY. Это означает уточнение подмножества, по которому производится вычисление агрегатной функции.
Пример запроса. Вывести наибольшие суммы покупок, совершенные каждым продавцом за каждый день.
SELECT snum,odate,MAX(amt) FROM orders GROUP BY snum,odate
Задания для самостоятельного выполнения.
-
Вывести фамилии всех заказчиков на букву C
-
Вывести все покупки, цена которых равна нулю или не определена.
-
Определить суммарную стоимость покупок на #10/03/90#
-
Вывести для каждого заказчика (cnum) наименьшую цену покупки
-
Вывести наибольший рейтинг для каждого города