Урок 2 SQL. Переименование столбца и применение агрегатных функций
![]()
Имена столбцов в запросах можно переименовывать. Это придает результатам более читабельный вид.
В языке SQL переименование полей связано с использованием ключевого слова AS, которое и используется для переименования имен полей в результирующих наборах
Синтаксис:
SELECT имя поля> AS псевдоним> FROM …
Рассмотрим пример переименования в SQL:
Пример БД «Институт»: Вывести фамилии учителей и их зарплаты, для тех преподавателей, у которых зарплата ниже 15000, переименовать поле zarplata на «низкая_зарплата»
1 2 3
SELECT name, zarplata AS низкая_зарплата FROM teachers WHERE zarplata15000;
SELECT name, zarplata AS низкая_зарплата FROM teachers WHERE zarplata

Результат:
SQL As 2_1. БД Компьютерный магазин. Вывести данные о компьютерах. Переименовать столбец Скорость в «Мб», а столбец HD в «Гб»
Переименование столбцов в SQL часто необходимо при вычислении значений, связанных с несколькими полями таблицы. Рассмотрим пример:
Пример БД «Институт»: Из таблицы teachers вывести поле name и вычислить сумму зарплаты и премии, назвав поле «зарплата_премия»
SELECT name, (zarplata+premia) AS zarplata_premia FROM teachers;
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;
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 Производитель = "Америка" )
SELECT COUNT( * ) FROM `pc` WHERE `Номер` IN ( SELECT `Номер` FROM product WHERE Производитель = «Америка» )
SQL As 2_3. БД Компьютерный магазин. Вывести общее количество продуктов, странами-производителями которых является Россия
SQL As 2_4. БД Компьютерный магазин. Вывести среднюю цену на ноутбуки
Agr func 2_2. БД Институт. Вывести минимальную и максимальную зарплату учителей
Agr func 2_3. БД Институт. Выберите название курса, уроки по которому не проводились и не запланированы проводиться. Дополните код:
1 2 3 4 5 6
SELECT `title` FROM `courses` WHERE `title` NOT IN ( . )
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 )).
SELECT COUNT(tid) AS Иванов FROM lessons WHERE tid=1
SELECT count(tid) as Иванов from lessons WHERE tid=1
Результат:
SELECT course, COUNT( tid ) AS Иванов FROM lessons WHERE tid =1 GROUP BY course
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
SELECT AVG(`Цена`) ,`Скорость` FROM `pc` GROUP BY `Скорость` HAVING AVG(`Цена`)

Результат:
Важно: В операторе Having нельзя использовать псевдоним (например, сред_цена), используемый для именования значений агрегатной функции.
Having SQL 2_6. БД Компьютерный магазин. Для различных типов принтеров определить их среднюю стоимость (т.е. отдельно по лазерным, струйным и матричным). Вести подсчет только если средняя стоимость
Как переименовать столбцы в Apache Spark

Встречались ли с ситуациями, когда имя столбца в PySpark неправильно написано или содержит пробелы, а вы хотели бы его переименовать? Тогда эта статья для вас. Мы расскажем, как переименовать обычные столбцы и вложенные различными способами.
Исходная таблица
Допустим имеется таблица, которая показана ниже. Мы использовали StructType для того, чтобы создать вложенные столбцы. Их также можно будет переименовывать, но об этом чуть позже.
from pyspark.sql.types import StructField, StructType, StringType, IntegerType data = [ (('Tom','','Cruise'), '1991-04-01', 3000), (('John','Stone',''), '2000-05-19', 4000), (('Robert','','Williams'), '1978-09-05', 4000), (('Jack','Louise','Ford'), '1967-12-01', 4000), (('Anne','Rose','Brown'), '1980-02-17', 1500) ] schema = StructType([ StructField('name', StructType([ StructField('first name', StringType()), StructField('middle name', StringType()), StructField('last name', StringType()) ])), StructField('birth date', StringType()), StructField('annual salary', IntegerType()) ]) df = spark.createDataFrame(data, schema) """ +--------------------+----------+-------------+ | name|birth date|annual salary| +--------------------+----------+-------------+ | [Tom, , Cruise]|1991-04-01| 3000| | [John, Stone, ]|2000-05-19| 4000| |[Robert, , Williams]|1978-09-05| 4000| |[Jack, Louise, Ford]|1967-12-01| 4000| | [Anne, Rose, Brown]|1980-02-17| 1500| +--------------------+----------+-------------+ """
В этой таблице есть два столбца с пробельным символом. Неудобство такого имени заключается в том, что нельзя применять точечную нотацию. Так, нельзя написать: df.birth date . Можно оставить такие имена, но тогда придется использовать синтаксис SQL, о котором говорили здесь.
1. Переименование столбцов в PySpark с помощью withColumnRenamed
Самый первый способ переименования столбцов в PySpark является метод withColumnRenamed . Он принимает на вход два параметра: имя старого столбца и имя нового. В большинстве случаев применяется именно этот метод.
Так, например, переименуем birth date в income :
df.withColumnRenamed('birth date', 'income') """ +----------------+----------+-------------+ | name|birth date|annual salary| +----------------+----------+-------------+ | [Tom, , Cruise]|1991-04-01| 3000| +----------------+----------+-------------+ """
Стоит помнить, что создается новая таблица, а не изменяется старая. Если старая не нужна, то переприсовойте переменную.
Форум пользователей MySQL
Доброго времени суток.
Выручите советом, как переименовать столбец и сделать выборку за один запрос?
БД такова:
дело происходит в iReporte и он в результате выводит одно поле с простым name
#2 24.02.2010 21:28:31
paulus Администратор Зарегистрирован: 22.01.2007 Сообщений: 6756
Re: Переименовать столбец в выборке
SELECT account.name AS acname, campaign.name AS camname
FROM account, campaign WHERE account.campaign_id = campaign.id
#3 25.02.2010 16:05:41
Артём Участник Зарегистрирован: 24.02.2010 Сообщений: 13
Re: Переименовать столбец в выборке
Я еще думал может сразу написать в раздел с серьезными вопросами
С этими сахарными отчетами совсем запарился. Спасибо
#4 04.10.2013 12:43:18
lnker Участник Зарегистрирован: 04.10.2013 Сообщений: 1
Re: Переименовать столбец в выборке
А что делать если идет выборка не кокретных полей а всех?
например
SELECT * FROM t_cat1;
выведет все значения и все поля так — как они записаны в базе:
А если мне нужно добавить префикс? чтобы было так:
с_id | с_name | с_cat | с_type
——+———+——+—-
1 | asd | ct1 | tp1
.
Где с_ — префикс который мне нужно добавить до названия колонки.. (Массовый AS)
Переименование столбцов в таблице
есть ли sql запрос что бы скажем переименовать test к примеру на materials ?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Переименование столбцов при отображении в DataGridView
Доброго времени суток! Присутствует на форме DataGridView, который отображает таблицу SQL. .
DBGrid: переименование столбцов, задание их ширины
Можно ли в DBGrid перейменовывать столбцы, задавать их длинну и скрывать некоторые из них?
Переименование столбца сводной таблице в Excel 2010
Здравствуйте. Перешли с Excel 2003 на 2010 и очень жалеем. Фильтр по цвету и увеличенное.
размеры столбцов в таблице
Всем привет. Не могу подогнать размеры столбцов в таблице по содержимому. Нужно, сделать так.
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
Я понял вопрос двояко. Либо
ALTER TABLE `table` CHANGE COLUMN `test` `materials` INT(10) NOT NULL DEFAULT 0;
(надо указывать заново полностью декларацию столбца),
либо
SELECT `test` AS `materials` FROM `table` WHERE .
