Содержание:
Переименование полей AS
Имена столбцов в запросах можно переименовывать. Это придает результатам более читабельный вид.
В языке SQL переименование полей связано с использованием ключевого слова AS, которое и используется для переименования имен полей в результирующих наборах
Синтаксис:
SELECT <имя поля> AS <псевдоним> FROM …
Рассмотрим пример переименования в SQL:
zarplata
на «низкая_зарплата»
✍ Решение:
Переименование столбцов в SQL часто необходимо при вычислении значений, связанных с несколькими полями таблицы. Рассмотрим пример:
teachers
вывести поле name
и вычислить сумму зарплаты и премии, назвав поле «зарплата_премия»
✍ Решение:
Личные данные
вывести значения полей Код студента
, Word
, Excel
, Access
и вычислить среднее значение по полям Word
, Excel
, Access
, назвав поле «Среднее»номера телефонов
и оценки по Word
студентов, успеваемость по курсу Word которых ниже 4 баллов, переименовать поле Word
на Низкая успеваемостьАгрегатные функции в SQL
Для получения итоговых значений и вычисления выражений используются агрегатные функции в sql:
Функция | Описание |
---|---|
COUNT (*) |
Возвращает количество строк таблицы. |
COUNT (имя поля) |
Возвращает количество значений в указанном столбце. |
SUM (имя поля) |
Возвращает сумму значений в указанном столбце. |
AVG (имя поля) |
Возвращает среднее значение в указанном столбце. |
MIN (имя поля) |
Возвращает минимальное значение в указанном столбце. |
MAX (имя поля) |
Возвращает максимальное значение в указанном столбце. |
Все агрегатные функции возвращают единственное значение.
Функции COUNT
, MIN
и MAX
применимы к любым типам данных.
Функции
SUM
иAVG
используются только для числовых полей.
Между функциямиCOUNT(*)
иCOUNT(<имя поля>)
есть разница: вторая при подсчете не учитываетNULL
-значения.
✍ Решение:
Рассмотрим более сложный пример использования агрегатных функций в sql.
✍ Решение:
1 2 3 4 5 6 7 8 | SELECT COUNT( * ) FROM `pc` WHERE `Номер` IN ( SELECT `Номер` FROM product WHERE Производитель = "Америка" ) |
1 2 3 4 5 6 | SELECT `title` FROM `courses` WHERE `title` NOT IN ( ... ) |
Предложение GROUP BY в SQL
Оператор group by
в sql обычно используется совместно с агрегатными функциями.
Агрегатные функции выполняются над всеми результирующими строками запроса. Если запрос содержит оператор GROUP BY
, каждый набор строк, заданных в предложении GROUP BY, составляет группу, и агрегатные функции выполняются для каждой группы отдельно.
Рассмотрим пример с таблицей lessons
:
- Выдавать количество проведенных уроков учителем Иванов из таблицы
lessons
(порядковый номер Иванова1
(tid
)). - Выдавать количество проведенных уроков учителем Иванов по разным курсам из таблицы
lessons
SELECT COUNT(tid) AS Иванов FROM lessons WHERE tid=1 |
SELECT course, COUNT( tid ) AS Иванов FROM lessons WHERE tid =1 GROUP BY course |
GROUP BY
все выходные строки запроса разделяются на группы, характеризуемые одинаковыми комбинациями значений в этих столбцах (т.е. агрегатные функции выполняются для каждой группы отдельно).
При этом стоит учесть, что при группировке по полю, содержащему NULL
-значения, все такие записи попадут в одну группу.
Список
. Назвать вычисляемые поля «кол_во_в_гр» и «кол_во_на_курс» Оператор Having SQL
Предложение HAVING
в SQL необходимо для проверки значений, которые получены с помощью агрегатной функции после группировки (после использования GROUP BY
). Такая проверка не может содержаться в предложении WHERE.
✍ Решение:
Having
нельзя использовать псевдоним (например, сред_цена), используемый для именования значений агрегатной функции.Посчитать количество уроков, проведенных одним и тем же учителем. Выдавать значение только для тех учителей, у которых уроков больше двух.