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 ВидТовара;

С помощью этого запроса посчитано, сколько было продано упаковок каждого вида продукции и на какую сумму.

Наши рекомендации