В чем разница между GROUP BY и ORDER BY в sql. Group by sql описание


GROUP BY оператор | Oracle PL/SQL •MySQL •SQL Server

Этот 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;

oracleplsql.ru

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 - уникальный идентификатор.
  • email - e-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]

myrusakov.ru

GROUP BY оператор MySQL | Oracle PL/SQL •MySQL •SQL Server

В этом учебном пособии вы узнаете, как использовать 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;

oracleplsql.ru

Transact-SQL группировка данных GROUP BY | Info-Comp.ru

Мы с Вами рассмотрели много материала по SQL, в частности Transact-SQL, но мы не затрагивали такую, на самом деле простую тему как группировка данных group by. Поэтому сегодня мы научимся использовать оператор group by для группировки данных.

Многие начинающие программисты, когда сталкиваются с SQL, не знают о такой возможности как группировка данных с помощью оператора group by, хотя эта возможность требуется достаточно часто на практике, в связи с этим наш сегодняшний урок, как обычно с примерами, посвящен именно тому, чтобы Вам было проще и легче научиться использовать данный оператор, так как Вы с этим обязательно столкнетесь. Если Вам интересна тема SQL, то мы, как я уже сказал ранее, не раз затрагивали ее, например, в статьях Язык SQL – объединение JOIN или Объединение Union и union all , поэтому можете ознакомиться и с этим материалом.

И для вступления небольшая теория.

Что такое оператор group by

Group by – это оператор (или конструкция, кому как удобней) SQL для группировки данных по полю, при использовании в запросе агрегатных функций, таких как sum, max, min, count и других.

Как Вы знаете, агрегатные функции работают с набором значений, например sum суммирует все значения. А вот допустим Вам необходимо, просуммировать по какому-то условию, или сразу по нескольким условиям, именно для этого нам нужен оператор group by, чтобы сгруппировать все данные по полям с выводом результатов агрегатных функций.

Как мне кажется, наглядней будет это все разобрать на примерах, поэтому давайте перейдем к примерам.

Примечание! Все примеры будем писать в Management Studio SQL сервера 2008.

Примеры использования оператора group by

И для начала давайте создадим и заполним тестовую таблицу с данными, которой мы будет посылать наши запросы select с использованием группировки group by. Таблица и данные конечно выдуманные, чисто для примера.

Создаем таблицу

CREATE TABLE [dbo].[test_table]( [id] [int] NULL, [name] [varchar](50) NULL, [summa] [money] NULL, [priz] [int] NULL ) ON [PRIMARY] GO

Я ее заполнил следующими данными:

Где,

  • Id –идентификатор записи;
  • Name – фамилия сотрудника;
  • Summa- денежные средства;
  • Priz – признак денежных средств (допустим 1- Оклад; 2-Премия).

Группируем данные с помощью запроса group by

И в самом начале давайте разберем синтаксис group by, т.е. где писать данную конструкцию:

Синтаксис:

Select агрегатные функции

From источник

Where Условия отбора

Group by поля группировки

Having Условия по агрегатным функциям

Order by поля сортировки

Теперь если нам необходимо просуммировать все денежные средства того или иного сотрудника без использования группировки мы пошлем вот такой запрос:

select SUM(summa)as summa from test_table where name='Иванов'

А если нужно просуммировать другого сотрудника, то мы просто меняем условие. Согласитесь, если таких сотрудников много, зачем суммировать каждого, да и это как-то не наглядно, поэтому нам на помощь приходит оператор group by. Пишем запрос:

select SUM(summa)as summa, name from test_table group by name

Как Вы заметили, мы не пишем никаких условий, и у нас отображаются сразу все сотрудники с просуммированным количеством денежных средств, что более наглядно.

Примечание! Сразу отмечу то, что, сколько полей мы пишем в запросе (т.е. поля группировки), помимо агрегатных функций, столько же полей мы пишем в конструкции group by. В нашем примере мы выводим одно поле, поэтому в group by мы указали только одно поле (name), если бы мы выводили несколько полей, то их все пришлось бы указывать в конструкции group by (в последующих примерах Вы это увидите).

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

select SUM(summa)as [Всего денежных средств], COUNT(*) as [Количество поступлений], Name [Сотрудник] from test_table group by name

Но допустим для начальства этого недостаточно, они еще просят, просуммировать также, но еще с группировкой по признаку, т.е. что это за денежные средства (оклад или премия), для этого мы просто добавляем в группировку еще одно поле, и для лучшего восприятия добавим сортировку по сотруднику, и получится следующее:

select SUM(summa)as [Всего денежных средств], COUNT(*) as [Количество поступлений], Name [Сотрудник] , Priz [Источник] from test_table group by name, priz order by name

Теперь у нас все отображается, т.е. сколько денег поступило сотруднику, сколько раз, а также из какого источника.

А сейчас для закрепления давайте напишем еще более сложный запрос с группировкой, но еще добавим названия этого источника, так как согласить по идентификаторам признака не понятно из какого источника поступили средства. Для этого мы используем конструкцию case.

select SUM(summa)as [Всего денежных средств], COUNT(*) as [Количество поступлений], Name [Сотрудник], case when priz = 1 then 'Оклад' when priz = 2 then 'Премия' else 'Без источника' end as [Источник] from test_table group by name, priz order by name

Вот теперь все достаточно наглядно и не так уж сложно, даже для начинающих.

Также давайте затронем условия по итоговым результатам агрегатных функций (having). Другими словами мы добавляем условие не по отбору самих строк, а уже на итоговое значение функций в нашем случае это sum или count. Например, нам нужно вывести все то же самое, но только тех, у которых «всего денежных средств» больше 200. Для этого добавим условие having:

select SUM(summa)as [Всего денежных средств], COUNT(*) as [Количество поступлений], Name [Сотрудник], case when priz = 1 then 'Оклад' when priz = 2 then 'Премия' else 'Без источника' end as [Источник] from test_table group by name, priz --группируем having SUM(summa) > 200 --отбираем order by name -- сортируем

Теперь у нас вывелись все значения sum(summa) которые больше 200, все просто.

Надеюсь, после сегодняшнего урока Вам стало понятно, как и зачем использовать конструкцию group by. Удачи! А SQL мы продолжим изучать в следующих статьях.

Похожие статьи:

info-comp.ru

Раздел GROUP BY при составлении запроса в SQL

Этот раздел предназначен для объединения результатов запроса в группы и расчета для каждой из них статистических значений. Иногда используют термин «сгруппированная таблица».

Синтаксическая формаGROUP BY [{ROLLUP|CUBE|GROUPING SET}] () [HAVING ]

ПримечанияПри группировании следует учитывать следующие ограничения и особенности:• Нельзя группировать строки по вычисляемым столбцам.• Если в столбце, по которому производится группирование, существуют NULL-значения, то все они следуют в зависимости от СУБД в конце или в начале множества выходных строк.• Возвращаемым столбцом может быть:— Константа— Функция агрегирования, возвращающая одно значения для всех строк группы— Столбец (столбцы), по которому производится группирование— Выражение, включающее перечисленные выше элементы

Примеры на группирование

SELECT SNum, MAX(Amt) FROM Orders GROUP BY SNumSELECT SNum, Odate, MAX(Amt) AS MaxAmt FROM Orders GROUP BY SNum, OdateSELECT SNum, Odate, MAX(Amt) FROM Orders WHERE Odate>10/03/1990 GROUP BY SNum, Odate

4) Варианты группирования4.1) Например:

SELECT NYear, NQuarter, COUNT(*) AS Cnt FROM Orders GROUP BY NYear, NQuanter ORDER BY NYear, NQuarter

Результат группирования по списку столбцов:

NYear NQuarter Cnt Пояснения
2003 1 87 Число заказов за I квартал
2003 2 77 Число заказов за II квартал
2003 3 91 Число заказов за III квартал
2004 4 125 Число заказов за IV квартал
2004 1 139 Число заказов за I квартал
2004 2 119 Число заказов за II квартал

4.2) ROLLUP ()С ROLLUP обеспечивается вывод:— Первоначально общих итогов— Затем итогов по группам— А после итогов каждой группы выводятся значения колонок, входящие в группу.

SELECT NYear, NQuarter, COUNT(*) AS Cnt FROM Orders GROUP BY ROLLUP(NYear, NQuarter) ORDER BY NYear, NQuarter

Результат группирования ROLLUP:

NYear NQuarter Cnt Пояснения
NULL NULL 648 Общее число заказов
2003 NULL 380 Общее число заказов за 2003
2003 1 87 Число заказов за I квартал
2003 2 77 Число заказов за II квартал
2003 3 91 Число заказов за III квартал
2003 4 125 Число заказов за IV квартал
2004 NULL 268 Общее число заказов за 2004
2004 1 139 Число заказов за I квартал
2004 2 119 Число заказов за II квартал

4.3) CUBE ()CUBE дополнительно к ROLLUP обеспечивает вывод после общих итогов еще и итогов одной колонки группирования по второй.

SELECT NYear, NQuarter, COUNT(*) AS Cnt FROM Orders GROUP BY CUBE(NYear, NQuarter) ORBER BY NYear, NQuarter

Результат группирования CUBE:

NYear NQuarter Cnt Пояснения
NULL NULL 648 Общее число заказов
NULL 1 226 Число заказов за I квартал за все годы
NULL 2 296 Число заказов за II квартал за все годы
NULL 3 101 Число заказов за III квартал за все годы
NULL 4 125 Число заказов за IV квартал за все годы
2003 NULL 380 Общее число заказов за 2003
2003 1 87 Число заказов за I квартал
2003 2 77 Число заказов за II квартал
2003 3 91 Число заказов за III картал
2003 4 125 Число заказов за IV картал
2004 NULL 268 Общее число заказов за 2004
2004 1 139 Число заказов за I квартал
2004 2 119 Число заказов за II квартал

4.4) GROUPING SET ()GROUPING SETS позволяет проводить агрегацию по нескольким группам в одном запросе. Для каждого набора групп запрос возвращает промежуточные итоги, где значение столбца группировки равно NULL. Фактически не выводит общих итогов по сравнению с ROLLUP.

SELECT NYear, NQuarter, COUNT(*) AS Cnt FROM Orders GROUP BY GROUNING SET((NYear, NQuarter),(NYear)) ORDER BY NYear, NQuarter

Результат группирования GROUPING SET:

NYear NQuarter Cnt Пояснения
2003 NULL 380 Общее число заказов за 2003
2003 1 87 Число заказов за I квартал
2003 2 77 Число заказов за II квартал
2003 3 91 Число заказов за III квартал
2003 4 125 Число заказов за IV квартал
2004 NULL 268 Общее число заказов за 2004
2004 1 139 Число заказов за I квартал
2004 2 119 Число заказов за II квартал

5) Подраздел HAVINGЭтот подраздел предназначен для ограничения числа строк в сгруппированной таблице и является частью раздела GROUP BY. Предикат этого раздела строится по тем же семантическим правилам, что и в разделе WHERE, однако напрямую в предикате могут участвовать только те столбцы, которые указаны в раздел GROUP BY. Остальные можно использовать только внутри функций агрегирования.

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

Примеры для подраздела HAVING:

SELECT SNum, Odate, MAX(Amt) FROM Orders GROUP BY SNum, Odate HAVING MAX(Amt)>3000SELECT SNum, MAX(Amt) FROM Orders GROUP BY SNum HAVING SNum IN (1002, 1007)SELECT Rating, COUNT (DISTINCT CNum) FROM Customer GROUP BY Rating HAVING Rating>(SELECT AVG(Rating) FROM Customer WHERE City=’San Jose’)SELECT Odate, SUM(Amt) FROM Orders A GROUP BY Odate HAVING SUM(Amt)>(SELECT 2000+MIN(Amt) FROM Orders B WHERE A.Odate=B.Odate)

all4study.ru

Команда SELECT Раздел GROUP BY - Группировка записей по полям

Раздел GROUP BY

Если в табличном выражении присутствует раздел GROUP BY SQL, то следующим выполняется GROUP BY.

Если обозначить через R таблицу, являющуюся результатом предыдущего раздела (FROM или WHERE), то результатом раздела GROUP BY является разбиение R на множество групп строк, состоящего из минимального числа групп таких, что для каждого столбца из списка столбцов раздела GROUP BY во всех строках каждой группы, включающей более одной строки, значения этого столбца равны. Для обозначения результата раздела GROUP BY в стандарте используется термин “сгруппированная таблица”.

Если утверждение SELECT содержит предложение GROUP BY(SELECT GROUP BY), список выбора может содержать только следующие типы выражений:

  • Константы.
  • Агрегатные функции.
  • Функции USER, UID, и SYSDATE.
  • Выражения, соответствующие перечисленным в предложении GROUP BY.
  • Выражения, включающие вышеперечисленные выражения.

Пример 1. Вычислить общий объем покупок для каждого товара:

SELECT stock,  SUM(quant)   FROM ordsale GROUP BY stock;

Фраза GROUP BY не предполагает упорядочивания строк. Для упорядочивания результата этого примера по кодам товаров, следует поместить фразу  ORDER BY stock следом за фразой GROUP BY.

Пример 2. Можно использовать группировки данных GROUP BY совместно с условием. Например, выбрать для каждого покупаемого товара его код и общий объем покупок, за исключением покупок покупателя с кодом 23:

SELECT stock,  SUM(quant)   FROM ordsale WHERE customerno<>23 GROUP BY stock;

Строки, не удовлетворяющие условию WHERE, исключаются перед группированием данных.

Строки таблицы можно группировать по любой комбинации ее полей. Если поле, по значениям которого осуществляется группирование, содержит какие-либо неопределенные значения, то каждое из них порождает отдельную группу.

Допустим, есть задача на вычисление количества какого-либо продукта. Поставщик поставляет нам продукцию по определённой цене. Вычислим общее количество каждого из продуктов. В этом нам поможет фраза GROUP BY. Результатом задачи станет таблица, состоящая из нескольких колонок. Поставки будут группироваться по ПР. Компоновка происходит по группам, которую и инициирует Group By SQL. Необходимо отметить, что данная фраза предполагает применение фразы Select, она же в свою очередь определяет единственное значение для каждого выражения сформированной группы. Бывают три случая для конкретного выражения: оно принимает арифметическое значение, оно становится SQL-функцией, которая будет сводить все значения столбца к сумме или другому заданному значению, также выражение может стать константой. Строки таблицы не обязательно должны быть строго сгруппированы, они могут группироваться по любой комбинации столбцов таблицы. Необходимо учитывать, что упорядочивание запросы по ПР возможно в том случае, если будет сделан соответствующий запрос.

sql-language.ru

sql - в чем разница между GROUP BY и ORDER BY в sql

ORDER BY: сортировать данные в порядке возрастания или убывания.

Рассмотрим таблицу CUSTOMERS:

+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+

Ниже приведен пример, который сортирует результат в порядке возрастания с помощью NAME:

SQL> SELECT * FROM CUSTOMERS ORDER BY NAME;

Это приведет к следующему результату:

+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | +----+----------+-----+-----------+----------+

GROUP BY: размещать идентичные данные в группы.

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

+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Ramesh | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | kaushik | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+

если вы хотите сгруппировать идентичные имена в одно имя, тогда запрос GROUP BY будет выглядеть следующим образом:

SQL> SELECT * FROM CUSTOMERS GROUP BY NAME;

Это приведет к следующему результату: (для идентичных имен он будет выбирать последний и, наконец, сортировать столбец в порядке возрастания)

+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 5 | Hardik | 27 | Bhopal | 8500.00 | | 4 | kaushik | 25 | Mumbai | 6500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | | 2 | Ramesh | 25 | Delhi | 1500.00 | +----+----------+-----+-----------+----------+

поскольку вы предположили, что это бесполезно без функций SQL, таких как sum, avg и т.д.

пройдите это определение, чтобы понять правильное использование GROUP BY:

Предложение GROUP BY работает с строками, возвращаемыми запросом, суммируя идентичные строки в одну/отдельную группу и возвращает одну строку с резюме для каждой группы, используя соответствующий агрегат функция в списке SELECT, например, COUNT(), SUM(), MIN(), MAX(), AVG(), и др.

Теперь, если вы хотите узнать общую сумму зарплаты для каждого клиента (имя), тогда запрос GROUP BY будет выглядеть следующим образом:

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS GROUP BY NAME;

Это приведет к следующему результату: (сумма зарплат идентичных имен и сортировка столбца NAME после удаления идентичных имен)

+---------+-------------+ | NAME | SUM(SALARY) | +---------+-------------+ | Hardik | 8500.00 | | kaushik | 8500.00 | | Komal | 4500.00 | | Muffy | 10000.00 | | Ramesh | 3500.00 | +---------+-------------+

qaru.site