Агрегатные функции в sql и переименование столбцов
На уроке будет рассмотрена тема sql переименование столбца (полей) при помощи служебного слова AS; также рассмотрена тема агрегатные функции в sql. Будут разобраны конкретные примеры запросов
Содержание:
- Переименование полей AS
- Агрегатные функции в SQL
- Предложение GROUP BY в SQL
- Оператор Having SQL
Переименование полей AS
Имена столбцов в запросах можно переименовывать. Это придает результатам более читабельный вид.
В языке SQL переименование полей связано с использованием ключевого слова AS, которое и используется для переименования имен полей в результирующих наборах
Синтаксис:
SELECT <имя поля> AS <псевдоним> FROM …
Рассмотрим пример переименования в SQL:
Пример БД «Институт»: Вывести фамилии учителей и их зарплаты, для тех преподавателей, у которых зарплата ниже 15000, переименовать поле zarplata
на «низкая_зарплата»
✍ Решение:
1 2 3 | SELECT name, zarplata AS низкая_зарплата FROM teachers WHERE zarplata<15000; |
Результат:
SQL As 2_1. БД Компьютерный магазин. Вывести данные о компьютерах. Переименовать столбец Скорость в
Переименование столбцов в SQL часто необходимо при вычислении значений, связанных с несколькими полями таблицы. Рассмотрим пример:
Пример БД «Институт»: Из таблицы teachers
вывести поле name
и вычислить сумму зарплаты и премии, назвав поле «зарплата_премия»
✍ Решение:
1 2 | SELECT name, (zarplata+premia) AS zarplata_premia FROM teachers; |
Результат:
SQL As 2_1. БД Институт. Вывести фамилии учителей и разницу между их зарплатой и премией. Назвать вывод «зарплата_минус_премия»
Задание 2_1.БД «Компьютерные курсы». Из таблицы Личные данные
вывести значения полей Код студента
, Word
, Excel
, Access
и вычислить среднее значение по полям Word
, Excel
, Access
, назвав поле «Среднее»
SQL As 2_2. БД Компьютерный магазин. Вывести объем оперативной памяти в Килобайтах (из Мб получить Кб). Выводить и исходное и получившееся значение
Задание 2_2.БД «Компьютерные курсы». Вывести номера телефонов
и оценки по Word
студентов, успеваемость по курсу Word которых ниже 4 баллов, переименовать поле Word
на Низкая успеваемость
Агрегатные функции в SQL
Для получения итоговых значений и вычисления выражений используются агрегатные функции в sql:
Функция | Описание |
---|---|
COUNT (*) | |
COUNT (имя поля) | Возвращает количество значений в указанном столбце. |
SUM (имя поля) | Возвращает сумму значений в указанном столбце. |
AVG (имя поля) | Возвращает среднее значение в указанном столбце. |
MIN (имя поля) | Возвращает минимальное значение в указанном столбце. |
MAX (имя поля) | Возвращает максимальное значение в указанном столбце. |
Все агрегатные функции возвращают единственное значение.
Функции COUNT
, MIN
и MAX
применимы к любым типам данных.
Функции
иSUM
иAVG
используются только для числовых полей.
Между функциямиCOUNT(*)
COUNT()
есть разница: вторая при подсчете не учитываетNULL
-значения.
Важно: при работе с агрегатными функциями в SQL используется служебное слово AS
Пример БД «Институт»: Получить значение самой большой зарплаты среди учителей, вывести итог как «макс_зп»
✍ Решение:
SELECT MAX(zarplata) AS макс_зп FROM teachers; |
Результаты:
Рассмотрим более сложный пример использования агрегатных функций в sql.
Пример: БД Компьютерный магазин. Найти имеющееся в наличии количество компьютеров, выпущенных производителем Америка
✍ Решение:
1 2 3 4 5 6 7 8 | SELECT COUNT( * ) FROM `pc` WHERE `Номер` IN ( SELECT `Номер` FROM product WHERE Производитель = "Америка" ) |
SQL As 2_3. БД Компьютерный магазин. Вывести общее количество продуктов, странами-производителями которых является Россия
Agr func 2_2. БД Институт. Вывести минимальную и максимальную зарплату учителей
Agr func 2_3.БД Институт. Выберите название курса, уроки по которому не проводились и не запланированы проводиться. Дополните код:
1 2 3 4 5 6 | SELECT `title` FROM `courses` WHERE `title` NOT IN ( ... ) |
Agr func 2_4. БД Институт. Измените предыдущее задание: Посчитайте количество тех курсов, уроки по которым не проводились и не запланированы проводиться. Выводите результат с именем «нет_уроков»
Задание 2_3. БД «Компьютерные курсы». Вывести год рождения самого младшего студента, назвать поле «Младший»
Задание 2_4. БД «Компьютерные курсы». Посчитать количество всех студентов группы 101. Назвать поле «Группа101»
Предложение 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
-значения, все такие записи попадут в одну группу.
SQL group by 2_5
. БД Компьютерный магазин. Для различных типов принтеров определить их среднюю стоимость и количество (т. е. отдельно по лазерным, струйным и матричным). Использовать агрегатные функции AVG(поле) и COUNT(поле). Результат должен выглядеть так:SQL group by 2_5. БД Институт. Посчитать количество уроков, проведенных одним и тем же учителем. Результат должен выглядеть так:
Задание 2_5.БД «Компьютерные курсы». Вывести количество человек в
каждойгруппе и количество человек на
каждомкурсе из таблицы Список
. Назвать вычисляемые поля «кол_во_в_гр» и «кол_во_на_курс»
Оператор Having SQL
Предложение HAVING
в SQL необходимо для проверки значений, GROUP BY
). Такая проверка не может содержаться в предложении WHERE.
Пример: БД Компьютерный магазин. Посчитать среднюю цену компьютеров с одинаковой скоростью процессора. Выполнить подсчет только для тех групп, средняя цена которых меньше 30000.
✍ Решение:
SELECT AVG(`Цена`) ,`Скорость` FROM `pc` GROUP BY `Скорость` HAVING AVG(`Цена`) <30000 |
Результат:
Важно: В операторе Having
нельзя использовать псевдоним (например, сред_цена), используемый для именования значений агрегатной функции.
Having SQL 2_6
. БД Компьютерный магазин. Для различных типов принтеров определить их среднюю стоимость (т.е. отдельно по лазерным, струйным и матричным). Вести подсчет только если средняя стоимостьHaving SQL 2_6. БД Институт
Посчитать количество уроков, проведенных одним и тем же учителем. Выдавать значение только для тех учителей, у которых уроков больше двух.
Задание 2_6. БД «Компьютерные курсы». Получить количество учеников каждой группы при условии, что курс не меньше 3-го
Эс-Кью-Эль или Сиквел: как произносится «SQL»
Image by Andrew Martin from PixabaySQL существует уже десятки лет и является частью рынка в миллиарды долларов. Но многие люди по-прежнему сомневаются, как правильно произносить этот термин. Это «S.Q.L» [ˈɛs kjuː ˈɛl] (эс-кью-эль) или «sequel» [ˈsiːkwəl] (сиквел)?
SQL: с чего все началось
Начнем с начала.
Реляционные базы данных начали свой путь с публикации Эдгара Кодда «A Relational Model of Data for Large Shared Data Banks» (1970 год). Идеи Кодда в то время были примечательными.
В то же время в Сан-Хосе (Калифорния) двое коллег — Дональд Чемберлин и Рэймонд Бойс — занимались разработкой языка запросов SQUARE (Specifying Queries As Relational Expressions). В 1974 году они опубликовали язык запросов SEQUEL (Structured English Query Language — «структурированный английский язык запросов»), в основе которого лежал SQUARE.
(Примечание ред. Techrocks: SEQUEL как раз и читается как «сиквел»).
К сожалению, акроним SEQUEL уже был зарегистрирован как торговая марка британской компании Hawker Siddeley, производящей авиационную технику. Поэтому название языка запросов было изменено на Structured Query Language, сокращенно — SQL.
В 1979 году был выпущен первый SQL-продукт — СУБД Oracle V2. Выпустила его компания Relational Software (позже переименованная в Oracle Corporation).
Буквально в течение нескольких недель IBM выпустила свой вариант — СУБД System R. Там тоже использовался новый язык запросов SEQUEL. Затем вышла SQL/DS в 1981 г. и, наконец, DB2 в 1983 г., которая до сих пор остается флагманом СУБД-продуктов IBM.
«S.Q.L» или «SEQUEL»?
В интернете постоянно ведутся споры о том, как нужно произносить SQL. Одни выступают за «эс-кью-эль», другие за «сиквел», а у третьих вообще свои варианты.
Стандарт говорит, что правильное произношение SQL — «эс-кью-эль». Тем не менее, многие англоговорящие специалисты по базам данных продолжают использовать «сиквел».
Например, профессор Дженнифер Уидом, соавтор четырех популярных книг по базам данных, в своем Стэнфордском курсе произносит SQL как «сиквел». Профессор Кристофер Дэйт в своей книге «A guide to the SQL Standard» (1987) тоже использует«сиквел».
(Примечание ред. Techrocks. Мы, честно говоря, не сразу поняли, как произношение может отражаться в книге. Но из комментариев разработчиков на эту тему стало ясно, что дело в артиклях. Если написано «an SQL», то читается как «эн эс-кью-эль», а «a SQL», соответственно, «э сиквел»).
Кто же прав? Я думаю, тут нет однозначного ответа. «Сиквел» получает больше голосов, но вот Чемберлин говорит «эс-кью-эль», а его голос весомее, потому что он соавтор этого языка.
Также стоит отметить, что разные реализации могут произноситься по-разному.
MySQL официально произносится как «май-эс-кью-эль», не «май-сиквел», но некоторым и второй вариант не жмет.
Microsoft SQL Server тоже часто произносят как «сиквел сервер». Например, так говорит Билл Гейтс:
Мартин Фаулер, соавтор «NoSQL Distilled», произносит NoSQL как «но-сиквел»:
Если вы заглянете в официальную SQL-документацию Oracle, вы увидите, что там по-прежнему отдается предпочтение «сиквел».
А вот PostgreSQL произносится не как «постгресиквел», а как «пост-грес-кью-эль» или просто «постгрес».
SQL также часто используется в паре с сокращением RDBMS (relational database management system — СУБД). И SQL/RDBMS произносится не как «sequel-reedbums», а как «S-Q-L-R-D-B-M-S».
Вообще в выборе произношения есть некоторая последовательность. Заметно, что, говоря о самом языке, практически все называют его «эс-кью-эль». А вот когда говорят о продуктах, используется «сиквел». Например, «PL – sequel» (PL/SQL), «Transact – sequel» (T-SQL) и «sequel server» (Microsoft SQL Server и Sybase SQL Server).
SQL в MySQL, PostgreSQL и SQLite официально произносится как «эс-кью-эль». Продукты Microsoft и Oracle приняли произношение «сиквел».
Oracle и Microsoft — гиганты в мире баз данных. Стоит ли нам прислушаться к их мнению насчет произношения SQL?
Многие возражают: «Если бы использовал Sequel, то так бы и говорил — «сиквел». Но я использую SQL, так что и говорить буду «эс-кью-эль»». Кроме того, фантазия людей не имеет границ, и встречаются довольно необычные варианты произношения: squall, sqwool, sqwll, squirrel.
Перевод статьи «S.Q.L or Sequel: How to Pronounce SQL?».
От редакции Techrocks. Мы решили также заглянуть на Quora и почитать мнение разработчиков на этот счет. Из дискуссии о том, можно ли судить об опытности разработчика по тому, как он произносит SQL:
Walter Smith
Я работал в Microsoft с парой очень опытных архитекторов баз данных. Так вот они произносили SQL как «эс-кью-эль».
Мне говорили, что стандарт ISO предполагает именно такое произношение, потому что там пишется “an SQL”, а не “a SQL”.
Билл Карвин, автор книги «SQL Antipatterns: Avoiding the Pitfalls of Database Programming»
Оба варианта нормальные. Оба используются как джуниорами, так и сеньорами, причем уже много лет.
Если кто-то отпускает комментарии о том, как вы произносите SQL, этот «кто-то» просто ищет повод поспорить. Озадачьте собеседника: заявите, что пользователи vim говорят “S-Q-L”, а пользователи emacs — “Sequel”. И уйдите.
Кевин Эдвард Кляйн, автор книги «SQL in a Nutshell»
В Северной Америке говорят «сиквел», когда имеют в виду СУБД. А говоря о самом языке, произносят «эс-кью-эль». Также побуквенно произносятся названия диалектов — T-SQL, PL/SQL и т. п.
Mark Flory
Однажды я проходил телефонное собеседование в компании, которая, как я надеялся, должна была статьи моим вторым рабочим местом.
Интервьюер: «В вашем резюме говорится, что вы знаете SEQUEL».
Я: «Нет. Я о нем только слышал. Профессор в колледже упоминал этот язык однажды».
Интервьюер: «Но он значится в вашем резюме».
Я: «Эээ… Нет».
Конец разговора.
Я пошел и рассказал о происшедшем моему боссу.
Босс: «Идиот, он же об SQL говорил».
Я: «А! Вот черт!..»
Mike Richmond
Люди, которые публикуют книги и статьи по SQL, вероятно, являются самыми компетентными пользователями и знают, как это произносится. Если сравнить частотность “a SQL” и “an SQL” в литературе, мы получим представление о том, какой вариант предпочитают авторы (ну или редакторы):
А как вы произносите SQL и почему именно так? Поделитесь в комментариях!
SQL SELECT AS Alias (с примерами)
В этом руководстве мы изучим псевдоним SQL AS с помощью примеров.
Псевдоним SQL AS
Ключевое слово AS используется для присвоения столбцам или таблицам временного имени, которое можно использовать для идентификации этого столбца или таблицы позже. Например,
ВЫБЕРИТЕ фамилию КАК имя ОТ клиентов;
Здесь команда SQL выбирает столбец last_name из таблицы Customers.
Синтаксис псевдонима SQL AS
Команда SQL AS
имеет следующий синтаксис:
SELECT column_1 AS alias_1, column_2 Псевдоним AS_2, …... column_n AS псевдоним_n ОТ имя_таблицы;
Здесь
-
столбец_1, столбец_2,... столбец_n
— столбцы таблицы -
alias_1, alias_2,...alias_n
— псевдонимы столбцов таблицы
Например,
ВЫБРАТЬ first_name КАК имя ОТ клиентов;
Здесь команда SQL выбирает столбец first_name столбца Customers . Однако имя столбца изменится на имя в наборе результатов.
Пример: псевдоним SQL ASSQL AS с более чем одним столбцом
Мы также можем использовать псевдонимы с более чем одним столбцом.
Например,
ВЫБРАТЬ customer_id AS cid, first_name AS имя ОТ клиентов;
Здесь команда SQL выбирает customer_id как cid и first_name как имя .
SQL AS с выражением
Мы можем объединить данные из нескольких столбцов и представить их в одном столбце с помощью функции CONCAT()
. Например,
ВЫБРАТЬ КОНТАКТ(имя, ' ', фамилия) КАК полное_имя ОТ клиентов;
Здесь команда SQL выбирает first_name и last_name . И имя столбца будет full_name в наборе результатов.
Однако наш онлайн-компилятор не поддерживает функцию CONCAT()
, поскольку он использует библиотеку SQLite . Вместо этого вам нужно использовать оператор конкатенации ||
для выполнения этой задачи.
Например, вот эквивалентный код, который будет работать в нашем компиляторе.
-- объединить first_name, пустое место и last_name в один столбец с именем full_name в результирующем наборе ВЫБЕРИТЕ имя || ' ' || фамилия как полное_имя ОТ клиентов;
Здесь команда SQL объединит столбцы first_name и last_name в наборе результатов как full_name .
Обратите внимание, что мы также соединили пустое пространство ''
между first_name и last_name . Это гарантирует, что данные из этих столбцов будут разделены пробелом в результирующем наборе.
Дополнительные примеры SQL AS
Обычно используется AS
для создания псевдонимов при работе с функциями. Например,
-- АС с функциями ВЫБРАТЬ COUNT(*) AS total_customers ОТ клиентов;
Здесь команда SQL подсчитывает общее количество строк и представляет значение как атрибут total_customers .
Набор результатов этой команды будет иметь столбец total_customers .
Ключевое слово AS
также можно использовать для присвоения временных имен таблицам. Например,
-- Псевдоним таблицы AS ВЫБЕРИТЕ cu.first_name, cu.last_name ОТ Заказчиков AS у.е.;
Здесь команда SQL временно называет таблицу Customers как cu и выбирает first_name и last_name из cu .
Результирующий набор этой команды будет иметь столбцы first_name и last_name .
Мы можем использовать псевдонимы AS с именами таблиц, чтобы сделать наш фрагмент коротким и понятным при работе с ПРИСОЕДИНЯЙТЕСЬ
. Например,
ВЫБРАТЬ C.customer_id AS cid, C.first_name AS имя, O.amount ОТ клиентов AS C ПРИСОЕДИНЯЙТЕСЬ к заказам КАК O ON C.customer_id = O.customer_id;
Здесь команда SQL временно называет таблицу Customers как C и таблицу Orders как O и выбирает customer_id из C , first_ имя из C и сумма из О .
Результирующий набор этой команды будет иметь cid , имя и сумма столбцов.
Чтобы узнать больше, посетите SQL JOIN.
Содержание
mysql — Какой смысл использовать ключевое слово «AS» в SQL, если псевдоним можно сделать без него?
спросил
Изменено 6 лет, 2 месяца назад
Просмотрено 2к раз
- Выберите оклад*12 в качестве «Годовой оклад» от «Сотрудник»;
- Выбрать оклад*12 «Годовой оклад» от Сотрудника;
Оба запроса дадут один и тот же результат, будет ли «AS» иметь какое-то значение? если да, то что это? если нет, то какой смысл его использовать?
- mysql
- sql
- sql-сервер
- оракул
2
Думаю причина проста. Рассмотрим код, подобный следующему:
выбрать а, б, в, г . . .
Иногда можно пропустить запятую:
выбрать a b, c, d
Если вы не используете вместо
, это выглядит как правильный код, и его может быть трудно понять. Если вы всегда используете как
для псевдонимов столбцов, то вы знаете, что это неправильно.
5
- Читаемость.
Представьте, что ваш запрос содержит 20, 50 или даже 100 столбцов. используяAs
поможет любому, кто читает запрос, узнать, что такое столбец и что такое псевдоним. - Совместимость.
Если вы планируете когда-либо перейти на СУБД, эта СУБД может не поддерживать сокращенные псевдонимы.
Кроме того, стоит упомянуть, что некоторым администраторам баз данных не нравится использование в качестве ключевых слов
. Вот статья Аарона Бертрана об этом. Лично я с этим постом не согласен (хотя остальные посты из серии о вредных привычках не менее гениальны ИМХО)
4
Гордон показал отличный результат.