SELECT Поле 1 AS Псевдоним 1
Поле 2 AS Псевдоним 2,
…
Поле N AS Псевдоним n
FROM Таблица;
Пример 2
SELECT SUM (Цена*Количество) AS [Суммарная стоимость всех покупок Иванова]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
WHERE Фамилия = “Иванов”;
В этом запросе с помощью функции суммирования SUM подсчитывается суммарная стоимость всех покупок покупателя Иванова.
Пример 3
SELECT Номер AS [Личный номер клиента], Фамилия, Имя, Отчество
FROM Покупка;
В этом запросе псевдоним используется для уточнения смысла данных, находящихся в поле Номер.
Предложение AS применяют и для того, чтобы именовать вычисляемые поля.
Пример 4
SELECT SUM (Баллы*Количество) AS [Количество баллов, набранное Петровым]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
WHERE Фамилия = “Петров”;
С помощью этого запроса аналогично суммируется количество баллов по всем покупкам покупателя Петрова.
Операция конкатенации строк
Операция конкатенации позволяет объединять значения двух или более полей символьного типа или символьных констант в одну строку. На примере следующего запроса мы увидим, как можно создавать вычисляемые поля на основе полей символьного типа.
Пример 5
SELECT Номер, Фамилия+” “+Имя+” “+Отчество AS [ФИО]
FROM Покупка
WHERE Дата=cdate(“27.11.2014”);
В результате выполнения этого запроса выводится информация о покупках за 27 ноября 2014 в виде таблицы, состоящей из полей Номер и ФИО. ФИО – вычисляемое поле, полученное в результате соединения текстовых полей Фамилия, Имя, Отчество в одно.
Для работы с текстовыми (строковыми) данными используются специальные строковые функции. Рассмотрим одну из них. Функция Left выделяет из строки первые несколько символов. Эта функция определяется следующим образом:
Left (<строка>, <количество>)
Эта функция из <строки> выбирает заданное <количество> символов, начиная с первого символа.
Пример 6
SELECT Фамилия+" "+LEFT(Имя,1)+"."+LEFT(Отчество,1)+"." AS [ФИО]
FROM Покупка
WHERE Дата BETWEEN cdate("01.11.2014") AND cdate("30.11.2014");
В результате выполнения этого запроса выводится список покупателей, (фамилии с инициалами), совершивших покупку в ноябре 2014 года.
В третьем и четвёртом запросах мы уже использовали статистическую функцию суммирования. Помимо этой функции в запросах часто используются другие статистические функции.
Статистические функции
COUNT - определяет количество строк или значений поля, выбранных посредством запроса, и не являющихся NULL-значениями.
SUM - вычисляет арифметическую сумму всех выбранных значений данного поля.
AVG - вычисляет среднее значение всех выбранных значений данного поля.
MAX - вычисляет наибольшее из всех выбранных значений данного поля.
MIN - вычисляет наименьшее из всех выбранных значений данного поля.
Пример 7
SELECT AVG (Баллы) AS [Среднее количество баллов по всей продукции]
FROM Продукция;
Этот запрос по всему прайс-листу подсчитывает среднее количество баллов, начисляемое покупателю при покупке того или иного товара в косметической фирме.
Пример 8
SELECT COUNT (*) AS [Количество товаров в ассортименте]
FROM Продукция;
Этот запрос подсчитывает общее количество товаров, представленных в прайс-листе.
Пример 9
SELECT SUM (Количество) AS [Количество проданных упаковок]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
WHERE (Наименование=”Утро”) and (Дата>=cdate(“01.12.2014”) and (Дата<=cdate(“31.12.2014”));
В этом запросе подсчитывается количество упаковок мыла Утро, проданных за декабрь 2014 года.
Пример 10
SELECT SUM (Цена*Количество) AS [Суммарные продажи 25 декабря 2014 года]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
WHERE Дата=cdate(“25.12.2014”);
В результате выполнения этого запроса вычисляется выручка за 25 декабря 2014 года.
Пример 11
SELECT MAX (Баллы) AS [Максимальный балл по прайс-листу]
FROM Продукция;
С помощью этого запроса по прайс-листу определяется наибольший балл, начисляемый при покупке продукции косметической фирмы.
Пример 12
SELECT MIN (Цена) AS [Минимальная цена по прайс-листу]
FROM Продукция;
С помощью этого запроса можно найти в прайс-листе минимальную цену товара.
А теперь рассмотрим ещё одну конструкцию оператора SELECT. Конструкция GROUP BY (группировать по) - позволяет группировать записи в подмножества, определяемые значениями какого-либо поля, и применять агрегирующие функции уже не по всем записям таблицы, а раздельно к каждой сформированной группе.
Пример 13
SELECT Фамилия, SUM (Цена*Количество) AS [Стоимость всех покупок каждого покупателя]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
GROUP BY Фамилия;
Этот запрос позволяет посчитать стоимость всех покупок каждого покупателя.
Пример 14
SELECT Дата, SUM (Цена*Количество) AS [Суммарные продажи за каждый день]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
GROUP BY Дата;
С помощью этого запроса вычисляется выручка за каждый день. Выбираемые из таблицы Покупка записи группируются по значениям поля Дата, указанного в предложении GROUP BY, и для каждой группы вычисляется сумма, на которую были проданы товары.
В конструкции GROUP BY для группирования может быть использовано несколько полей. В этом случае строки вначале группируются по значениям первого поля, а внутри этих групп – в подгруппы по значениям второго поля.
Пример 15
SELECT Фамилия, Дата, SUM (Цена*Количество) AS [Суммарная стоимость покупок каждого клиента по датам]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
GROUP BY Фамилия, Дата;
В этом запросе вычисляется суммарная стоимость покупок каждого клиента по датам.
При необходимости часть сформированных с помощью GROUP BY групп может быть исключены с помощью конструкции HAVING. Конструкция HAVINGопределяет условие, по которому группы следует включать в выходные данные (аналогично WHERE, которое осуществляет отбор для отдельных строк).
Пример 16
SELECT Дата, SUM (Цена*Количество) AS [Суммарные продажи за день]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
GROUP BY Дата
HAVING SUM (Цена*Количество)>10000;
Результатом выполнения этого запроса является таблица, содержащая даты и суммарные продажи за этот день, когда выручка была более 10000 рублей.
Пример 17
SELECT ВидТовара, SUM (Количество) AS [Количество проданных упаковок], SUM (Цена*Количество) AS [Продано на сумму]
FROM Покупка INNER JOIN Продукция ON Покупка.КодТовара=Продукция.КодТовара
GROUP BY ВидТовара;
С помощью этого запроса посчитано, сколько было продано упаковок каждого вида продукции и на какую сумму.