Разное

Оператор group by в sql: Группировка данных, оператор group by, оператор having

Содержание

SQL GROUP BY — группировка в запросах


Оператор SQL GROUP BY служит для распределения строк — результата запроса — по группам, в которых
значения некоторого столбца, по которому происходит группировка, являются одинаковыми. Группировку можно
производить как по одному столбцу, так и по нескольким.


Часто оператор SQL GROUP BY применяется вместе с агрегатными функциями (COUNT, SUM, AVG, MAX, MIN).
В этих случаях агрегатные функции служат для вычисления соответствующего агрегатного значения ко всему
набору строк, для которых некоторый столбец — общий.


Оператор GROUP BY имеет следующий синтаксис:


SELECT ИМЕНА_СТОЛБЦОВ
FROM ИМЯ_ТАБЛИЦЫ
[WHERE УСЛОВИЕ]
GROUP BY ИМЕНА_СТОЛБЦОВ


Если в результате запроса требуется вывести один столбец и по этому же столбцу производится группировка,
то оператор GROUP BY просто выбирает уникальные значения и убирает дубликаты, то есть выполняет те же задачи, что и ключевое слово DISTINCT.


Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД
не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке
.


Скрипт для создания базы данных библиотеки, её таблиц и заполения таблиц данными —
в файле по этой ссылке
.


В примерах работаем с базой данных библиотеки и ее таблицей «Книга в пользовании» (Bookinuse). Отметим, что
оператор GROUP BY ведёт себя несколько по-разному в MySQL и в MS SQL Server. Эти различия будут показаны на
примерах.



















Author Title Pubyear Inv_No Customer_ID
Толстой Война и мир 2005 28 65
Чехов Вишневый сад 2000 17 31
Чехов Избранные рассказы 2011 19 120
Чехов Вишневый сад 1991 5 65
Ильф и Петров Двенадцать стульев 1985 3 31
Маяковский Поэмы 1983 2 120
Пастернак Доктор Живаго 2006 69 120
Толстой Воскресенье 2006 77 47
Толстой Анна Каренина 1989 7 205
Пушкин Капитанская дочка 2004 25 47
Гоголь Пьесы 2007 81 47
Чехов Избранные рассказы 1987 4 205
Пушкин Сочинения, т.1 1984 6 47
Пастернак Избранное 2000 137 18
Пушкин Сочинения, т.2 1984 8 205
NULL Наука и жизнь 9 2018 2019 127 18
Чехов Ранние рассказы 2001 171 31

Пример 1. Вывести авторов выданных книг, сгруппировав их. Пишем
следующий запрос:


SELECT Author
FROM BOOKINUSE
GROUP BY Author

Этот запрос вернёт следующий результат:










Author
NULL
Гоголь
Ильф и Петров
Маяковский
Пастернак
Пушкин
Толстой
Чехов

Как видим, в таблице стало меньше строк, так как фамилии
авторов остались каждая по одной.

В следующем примере увидим, что оператор GROUP BY не следует путать
с оператором ORDER BY и поймём, чем эти операторы отличаются друг от друга.

Пример 2. Вывести авторов и названия выданных книг,
сгруппировав по авторам. Пишем
следующий запрос, который допустим в MySQL:


SELECT Author, Title
FROM Bookinuse
GROUP BY Author

Этот запрос вернёт следующий результат:










Author Title
NULL Наука и жизнь 9 2018
Гоголь Пьесы
Ильф и Петров Двенадцать стульев
Маяковский Поэмы
Пастернак Доктор Живаго
Пушкин Капитанская дочка
Толстой Война и мир
Чехов Вишнёвый сад

Как видим, в таблице каждому автору соответствует лишь одна книга, причём та,
которая в таблице BOOKINUSE является первой по порядку записей.

Если бы нам требовалось вывести все книги, причём авторы должны были бы следовать
не «вразброс», а по порядку: сначала Гоголь и все его книги, затем другие авторы и все их книги,
то мы применили бы не оператор GROUP BY, а оператор ORDER BY.

По-другому ведёт себя оператор GROUP BY в MS SQL Server.

И всё же вывести все записи, соответствующие значению столбца, по которому происходит
группировка, можно. Но в этом случае в результирующей таблице должен появиться ещё один столбец. Такой
случай проиллюстирован в следующем примере.

Пример 3. Вывести авторов, названия выданных книг, ID пользователя и
инвентарный номер выданной книги.
Сгруппировать по авторам, ID пользователя и инвентарному номеру. На MySQL запрос будет следующим:


SELECT Author, Title, Customer_ID, Inv_no
FROM Bookinuse
GROUP BY Author, Customer_ID, Inv_no

Этот запрос вернёт следующий результат:


















Author Title Customer_ID Inv_no
Гоголь Пьесы 47 81
Ильф и Петров Двенадцать стульев 31 3
Маяковский Поэмы 120 2
Пастернак Избранное 18 137
Пастернак Доктор Живаго 120 69
Пушкин Капитанская дочка 47 25
Пушкин Сочинения, т.1 47 6
Пушкин Сочинения, т.2 205 8
Толстой Воскресенье 47 77
Толстой Война и мир 65 28
Толстой Анна Каренина 205 7
Чехов Вишневый сад 31 19
Чехов Ранние рассказы 31 171
Чехов Вишневый сад 65 5
Чехов Избранные рассказы 120 19
Чехов Избранные рассказы 205 4

Как видим, в результирующей таблице присутствуют все книги всех авторов, причём авторы
следуют по порядку, как если бы мы применили оператор ORDER BY. Кроме того, видно, что записи сгруппированы
и по второму указанному столбцу — Customer_ID. Так, у автора Пушкина сначала перечисляются книги, выданные
пользователю с Customer_ID 47, а затем — 205. У автора Чехова сначала перечисляются книги, выданные
пользователю с Customer_ID 31, а затем — с другими номерами. Третий столбец, по которому происходит группировка — Inv_no —
добавлен только для того, чтобы в результирующей таблице выводились все строки, соответствующие значениям
ранее перечисленных столбцов для группировки, а не только уникальные.

По-другому ведёт себя
оператор GROUP BY в MS SQL Server
и в случае этого запроса.


Агрегатные функции COUNT, SUM, AVG, MAX, MIN служат для вычисления соответствующего агрегатного значения ко всему
набору строк, для которых некоторый столбец — общий.

Пример 4. Вывести количество выданных книг каждого автора. Запрос будет следующим:


SELECT Author, COUNT(*) AS InUse
FROM Bookinuse
GROUP BY Author

Результатом выполнения запроса будет следующая таблица:










Author InUse
NULL 1
Гоголь 1
Ильф и Петров 1
Маяковский 1
Пастернак 2
Пушкин 3
Толстой 3
Чехов 5

Пример 5. Вывести количество книг, выданных каждому пользователю. Запрос будет следующим:


SELECT Customer_ID, COUNT(*) AS InUse
FROM Bookinuse
GROUP BY Customer_ID

Результатом выполнения запроса будет следующая таблица:








User_ID InUse
18 1
31 3
47 4
65 2
120 3
205 3


Примеры запросов к базе данных «Библиотека» есть также в уроках по оператору IN,
предикату EXISTS и функциям
CONCAT, COALESCE.

На сайте есть более подробный материал об агрегатных функциях и их совместном
использовании с оператором GROUP BY
.

Поделиться с друзьями

Реляционные базы данных и язык SQL

GROUP BY оператор — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Этот SQL руководство объясняет, как использовать SQL GROUP BY с синтаксисом и примерами.

Описание

SQL оператор GROUP BY можно использовать в SELECT для сбора данных по нескольким записям и группировки результатов одного или нескольких столбцов.

Синтаксис

SELECT expression1, expression2, … expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n;

Параметры или аргументы

expression1, expression2, … expression_n — выражения, которые не входят в aggregate_function и должны быть включены в предложение GROUP BY в конце оператора SQL.

aggregate_function — это функция, такая как SUM, COUNT, функции MIN, MAX или AVG.

aggregate_expression – это столбец или выражение, которое используется в aggregate_function.

tables – таблицы из которых вы хотите выгрузить данные. После оператора FROM должна быть указана хотя бы одна таблица.

WHERE conditions. Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.

Пример – использования функции SUM

Давайте посмотрим на примере SQL запроса GROUP BY, который использует SQL функцию SUM.

В этом примере GROUP BY использует функцию SUM, чтобы получить total sales (общий объем продаж) по department (наименование отдела) таблицы order_details.

SELECT department, SUM(sales) AS «Total sales»
FROM order_details
GROUP BY department;

SELECT department, SUM(sales) AS «Total sales»

FROM order_details

GROUP BY department;

В SQL SELECT предложении мы перечислили один столбец department, не входящий в функции SUM. Поле department должно быть указано в операторе GROUP BY.

Пример – использование функции COUNT

Давайте посмотрим, как можно использовать предложение GROUP BY с SQL функцией COUNT.

В этом примере GROUP BY использует функцию COUNT для возврата department (наименование отдела) и number of employees (количество сотрудников в отделе), которые делают более $ 5000 / год.

SELECT department, COUNT(*) AS «Number of employees»
FROM employees
WHERE salary > 25000
GROUP BY department;

SELECT department, COUNT(*) AS «Number of employees»

FROM employees

WHERE salary > 25000

GROUP BY department;

Пример – использование функции MIN

Давайте рассмотрим следующий пример, как мы могли бы использовать GROUP BY с SQL функцией MIN.

Этот пример GROUP BY использует функцию MIN, для возврата department (наименование отдела) и минимальную salary (зарплату) в department.

SELECT department, MIN(salary) AS «Lowest salary»
FROM employees
GROUP BY department;

SELECT department, MIN(salary) AS «Lowest salary»

FROM employees

GROUP BY department;

Пример — использование функции MAX

И, наконец, давайте посмотрим на то, как мы могли бы использовать GROUP BY с SQL функцией MAX.

В этом примере GROUP BY использует функцию MAX, чтобы вернуть department (наименование отдела) и максимальную salary (зарплату) в department.

SELECT department, MAX(salary) AS «Highest salary»
FROM employees
GROUP BY department;

SELECT department, MAX(salary) AS «Highest salary»

FROM employees

GROUP BY department;

GROUP BY в SQL

Вы здесь:
Главная — MySQL — SQL — GROUP BY в SQL


Одной из важных команд в SQL является GROUP BY. Данная конструкция создана для выборки отдельных групп строк из таблицы, к каждой из которых применяются функции, указанные в SELECT (например, COUNT(), MIN() и так далее). Давайте разберём GROUP BY в SQL на конкретных примерах.

Допустим, у нас есть таблица супермаркетов:

  • id — уникальный идентификатор.
  • shop_id — уникальный идентификатор супермаркета.
  • price — цена на молоко.

Нам необходимо узнать среднюю цену на молоко у каждого супермаркета. Обратите внимание, что shop_id может повторяться (ведь есть сети супермакетов). Поэтому нам необходимо сделать группу по shop_id, и для каждой строки в этой группе вычислить среднюю цену.

Исходная таблица выглядит следующим образом:










id

shop_id

price
1 1 40
2 2 36
3 1 35
4 3 38
5 4 39
6 3 38
7 3 35

Для решения нашей задачи мы используем GROUP BY:


SELECT `shop_id`, AVG(`price`) FROM `table` GROUP BY `shop_id`

В результате получится следующее:







shop_id

AVG(`price`)
1 37.5
2 36.0
3 37.0
4 39.0

Таким образом, мы узнали среднюю цену в конкретной сети супермаркетов (или в одиночном магазине).

Ещё одним очень частым применением GROUP BY в SQL является выборка уникальных записей из таблиц. В предыдущем примере Вы заметили, что в результирующей выборке нет повторяющихся shop_id, тогда как в исходной таблице они были.

Допустим, у нас есть таблица с пользователями:

  • id — уникальный идентификатор.
  • emaile-mail пользователя.
  • hash — уникальный хэш пользователя.

И перед нами встала задача выбрать уникальных пользователей, причём именно уникальных людей, а не уникальных учётных записей. Ведь у одного человека может быть и 100 аккаунтов с разными e-mail и, разумеется, id. А hash — это некая строка, характеризующая его как уникального человека.

Таким образом, нам надо выбрать все записи с уникальным hash. Для этого опять же используется GROUP BY:


SELECT * FROM `table` GROUP BY `hash`

В результате, будут извлечены только уникальные hash, то есть 2 одинаковых hash в результирующей выборке Вы не увидите.

Вот таких два практических примера использования GROUP BY в SQL мы разобрали.


  • Создано 09.09.2013 12:31:55



  • Михаил Русаков

Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):


  1. Кнопка:

    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:


  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

MS SQL Server и T-SQL

Операторы GROUP BY и HAVING

Последнее обновление: 19.07.2017

Для группировки данных в T-SQL применяются операторы GROUP BY и HAVING, для использования которых применяется следующий формальный синтаксис:


SELECT столбцы
FROM таблица
[WHERE условие_фильтрации_строк]
[GROUP BY столбцы_для_группировки]
[HAVING условие_фильтрации_групп]
[ORDER BY столбцы_для_сортировки]

GROUP BY

Оператор GROUP BY определяет, как строки будут группироваться.

Например, сгруппируем товары по производителю


SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
GROUP BY Manufacturer

Первый столбец в выражении SELECT — Manufacturer представляет название группы, а второй столбец — ModelsCount представляет результат функции Count,
которая вычисляет количество строк в группе.

Стоит учитывать, что любой столбец, который используется в выражении SELECT (не считая столбцов, которые хранят результат агрегатных функций),
должны быть указаны после оператора GROUP BY. Так, например, в случае выше столбец Manufacturer указан и в выражении SELECT, и в выражении
GROUP BY.

И если в выражении SELECT производится выборка по одному или нескольким столбцам и также используются агрегатные функции, то необходимо использовать
выражение GROUP BY. Так, следующий пример работать не будет, так как он не содержит выражение группировки:


SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products

Другой пример, добавим группировку по количеству товаров:


SELECT Manufacturer, ProductCount, COUNT(*) AS ModelsCount
FROM Products
GROUP BY Manufacturer, ProductCount

Оператор GROUP BY может выполнять группировку по множеству столбцов.

Если столбец, по которому производится группировка, содержит значение NULL, то строки со значением NULL составят
отдельную группу.

Следует учитывать, что выражение GROUP BY должно идти после выражения WHERE, но до выражения
ORDER BY:


SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
WHERE Price > 30000
GROUP BY Manufacturer
ORDER BY ModelsCount DESC

Фильтрация групп. HAVING

Оператор HAVING определяет, какие группы будут включены в выходной результат, то есть выполняет фильтрацию групп.

Применение HAVING во многом аналогично применению WHERE. Только есть WHERE применяется к фильтрации строк, то HAVING используется для фильтрации групп.

Например, найдем все группы товаров по производителям, для которых определено более 1 модели:


SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
GROUP BY Manufacturer
HAVING COUNT(*) > 1

При этом в одной команде мы можем использовать выражения WHERE и HAVING:


SELECT Manufacturer, COUNT(*) AS ModelsCount
FROM Products
WHERE Price * ProductCount > 80000
GROUP BY Manufacturer
HAVING COUNT(*) > 1

То есть в данном случае сначала фильтруются строки: выбираются те товары, общая стоимость которых больше 80000. Затем выбранные товары
группируются по производителям. И далее фильтруются сами группы — выбираются те группы, которые содержат больше 1 модели.

Если при этом необходимо провести сортировку, то выражение ORDER BY идет после выражения HAVING:


SELECT Manufacturer, COUNT(*) AS Models, SUM(ProductCount) AS Units
FROM Products
WHERE Price * ProductCount > 80000
GROUP BY Manufacturer
HAVING SUM(ProductCount) > 2
ORDER BY Units DESC

В данном случае группировка идет по производителям, и также выбирается количество моделей для каждого производителя (Models)
и общее количество всех товаров по всем этим моделям (Units). В конце группы сортируются по количеству товаров по убыванию.

GROUP BY SQL Server — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать оператор GROUP BY в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

GROUP BY SQL Server (Transact-SQL) используется в операторе SELECT для сбора данных по нескольким записям и группировки результатов по одному или нескольким столбцам.

Синтаксис

Синтаксис GROUP BY в SQL Server (Transact-SQL):

SELECT expression1, expression2, … expression_n,
aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n;

Параметры или аргументы

expression1, expression2, … expression_n — выражения, которые не заключены в агрегирующую функцию и должны быть включены в предложение GROUP BY.
aggregate_function — это может быть функция, такая как функции SUM, COUNT, MIN, MAX или AVG.
tables — таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в предложении FROM.
WHERE conditions— необязательный. Условия, которые должны быть выполнены для выбранных записей.

Пример использования функции SUM

Рассмотрим пример запроса SQL Server GROUP BY, который использует функцию SUM.
Например:

SELECT product_name, SUM(quantity) AS «Total quantity»
FROM products
GROUP BY product_name;

SELECT product_name, SUM(quantity) AS «Total quantity»

FROM products

GROUP BY product_name;

В этом примере SQL Server GROUP BY используется функция SUM для возврата product_name и общего количества (для product_name).

Поскольку вы указали один столбец (поле product_name) в операторе SELECT, который не инкапсулирован в функцию SUM, вы должны использовать предложение GROUP BY. Поэтому поле product_name должно быть указано в предложении GROUP BY.

Пример использования функции COUNT

Рассмотрим, как мы можем использовать предложение GROUP BY с функцией COUNT.
Например:

SELECT manager_id, COUNT(*) AS «Number of employees»
FROM employees
WHERE last_name = ‘Колесников’
GROUP BY manager_id;

SELECT manager_id, COUNT(*) AS «Number of employees»

FROM employees

WHERE last_name = ‘Колесников’

GROUP BY manager_id;

В этом примере GROUP BY используется функция COUNT для возврата manager_id и количества employees (сотрудников), чье last_name — ‘Колесников’.

Пример использования функции MIN

Рассмотрим, как мы можем использовать предложение GROUP BY с функцией MIN.
Например:

SELECT product_type, MIN(quantity) AS «Lowest quantity»
FROM products
GROUP BY product_type;

SELECT product_type, MIN(quantity) AS «Lowest quantity»

FROM products

GROUP BY product_type;

Этот пример GROUP BY использует функцию MIN для возврата product_type и минимального количества для этого product_type.

Пример использования функции MAX

Наконец, рассмотрим, как мы можем использовать GROUP BY с функцией MAX.
Например:

SELECT department, MAX(salary) AS «Highest salary»
FROM employees
GROUP BY department;

SELECT department, MAX(salary) AS «Highest salary»

FROM employees

GROUP BY department;

В этом примере используется функция MAX для возврата имени каждого department (отдела) и максимальной salary (заработной платы) в department.

GROUP BY оператор MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать MySQL оператор GROUP BY с синтаксисом и примерами.

Описание

MySQL оператор GROUP BY используется в SELECT предложении для сбора данных по нескольким записям и группировки результатов по одному или нескольким столбцам.

Синтаксис

Синтаксис оператора GROUP BY в MySQL:

SELECT expression1, expression2, … expression_n,
aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n;

Параметры или аргументы

expression1, expression2, … expression_n — выражения, которые не заключены в агрегированную функцию и должны быть включены в предложение GROUP BY.
aggregate_function — функция, такая как функции SUM, COUNT, MIN, MAX или AVG.
tables — таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в операторе FROM.
WHERE conditions — необязательный. Условия, которые должны быть выполнены для выбранных записей.

Пример использования функции SUM

Рассмотрим пример запроса MySQL GROUP BY, который использует функцию SUM.
В этом примере MySQL GROUP BY используется функция SUM, чтобы вернуть имя product и общее количество (для product).

SELECT product, SUM(quantity) AS «Total kol»
FROM order_details
GROUP BY product;

SELECT product, SUM(quantity) AS «Total kol»

FROM order_details

GROUP BY product;

Запрос в примере вернет общее количество по полю quantity под алиасом «Total kol».
Поскольку вы указали один столбец (поле product) в операторе SELECT, который не инкапсулирован в функцию SUM, то вы должны использовать оператор GROUP BY. Поэтому поле product должно быть указано в операторе GROUP BY.

Пример использования функции COUNT

Рассмотрим, как мы можем использовать оператор GROUP BY с функцией COUNT в MySQL.

В этом примере GROUP BY используется функция COUNT для возврата product и количества заказов (для этого product), которые находятся в категории product.

SELECT product, COUNT(*) AS «Number of orders»
FROM order_details
WHERE category = ‘produce’
GROUP BY product;

SELECT product, COUNT(*) AS «Number of orders»

FROM order_details

WHERE category = ‘produce’

GROUP BY product;

Пример использования функции MIN

Рассмотрим, как мы можем использовать оператор GROUP BY с функцией MIN в MySQL.

В этом примере GROUP BY используется функция MIN, чтобы вернуть department (имя каждого отдела) и lowest salary (минимальную зарплату в отделе).

SELECT department, MIN(salary) AS «Lowest salary»
FROM employees
GROUP BY department;

SELECT department, MIN(salary) AS «Lowest salary»

FROM employees

GROUP BY department;

Пример использования функции MAX

Наконец, посмотрим, как мы можем использовать оператор GROUP BY с функцией MAX в MySQL.

В этом примере GROUP BY используется функция MAX для возврата имени каждого department и максимальной заработной платы в department.

SELECT department, MAX(salary) AS «Highest salary»
FROM employees
GROUP BY department;

SELECT department, MAX(salary) AS «Highest salary»

FROM employees

GROUP BY department;

PostgreSQL оператор GROUP BY — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать PostgreSQL оператор GROUP BY с синтаксисом и примерами.

Описание

PostgreSQL оператор GROUP BY используется в операторе SELECT для сбора данных по нескольким записям и группировки результатов по одному или нескольким столбцам.

Синтаксис

Синтаксис для оператора GROUP BY в PostgreSQL:

SELECT expression1, expression2,… expression_n,
aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2,… expression_n;

Параметры или аргументы

expression1, expression2,… expression_n
Выражения, которые не заключены в агрегатную функцию и должны быть включены в предложение GROUP BY.
aggregate_function
Это может быть агрегатная функция, например sum, count, min, max или avg.
tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.

Пример — использование функции sum

Рассмотрим пример PostgreSQL запроса GROUP BY, в котором используется функция sum.
В этом PostgreSQL примере GROUP BY используется функция sum для возврата department (названия отдела) и «Salaries for department» (общей заработной платы для отдела).

SELECT department, sum(salary) AS «Salaries for department»
FROM employees
GROUP BY department;

SELECT department, sum(salary) AS «Salaries for department»

FROM employees

GROUP BY department;

Поскольку в вашем операторе SELECT вы указали один столбец (поле department), который не инкапсулирован в функцию sum, вы должны использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.

Пример — использование функции count

Рассмотрим, как мы могли бы использовать оператор GROUP BY с функцией count.
В этом примере GROUP BY функция count используется для возврата department (отдела) и «Number of employees» (количества сотрудников для этого отдела), которые имеют status ‘Active’.

SELECT department, count(*) AS «Number of employees»
FROM employees
WHERE status = ‘Active’
GROUP BY department;

SELECT department, count(*) AS «Number of employees»

FROM employees

WHERE status = ‘Active’

GROUP BY department;

Пример — использование функции min

Давайте теперь посмотрим, как мы можем использовать оператор GROUP BY с функцией min.
В этом примере GROUP BY используется функция min для возврата department (названия отдела) и «Lowest salary» (минимальной зарплаты в отделе).

SELECT department, min(salary) AS «Lowest salary»
FROM employees
GROUP BY department;

SELECT department, min(salary) AS «Lowest salary»

FROM employees

GROUP BY department;

Пример — использование функции max

Наконец, давайте посмотрим, как можно использовать оператор GROUP BY с функцией max.
В этом примере GROUP BY используется функция max для получения department (названия отдела) и «Highest salary» (максимальной зарплаты в отделе).

SELECT department, max(salary) AS «Highest salary»
FROM employees
GROUP BY department;

SELECT department, max(salary) AS «Highest salary»

FROM employees

GROUP BY department;

mysql — Как правильно использовать оператор GROUP BY в SQL?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.Синтаксис

sql, количество, группировка и добавление в оператор

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

  1. Авторизоваться
    зарегистрироваться

  2. текущее сообщество

.Сервер

sql — Sub SELECT в операторе GROUP BY SQL

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

c # — EntityFramework Group, не включенная в оператор SQL

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *