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

Когда вы используете это вообще? Примеры приветствуются!

Я имею в виду MySql, но не могу представить, что концепция отличается от другой СУБД

Ответ 1

ORDER BY изменяет порядок возврата элементов.

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

Ответ 2

ORDER BY изменяет порядок возврата элементов.

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

TABLE:
ID NAME
1  Peter
2  John
3  Greg
4  Peter

SELECT *
FROM TABLE
ORDER BY NAME

= 
3 Greg
2 John
1 Peter
4 Peter

SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME

= 
1 Greg
1 John 
2 Peter

SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1

=
Peter

Ответ 3

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 |
+---------+-------------+

Ответ 4

Разница заключается именно в том, что подразумевается в названии: группа выполняет операцию группировки и порядок по типам.

Если вы выполните SELECT * FROM Customers ORDER BY Name, вы получите список результатов, отсортированный по имени клиента.

Если вы делаете SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive, вы получаете количество активных и неактивных клиентов. Группа агрегировала результаты на основе указанного вами поля.

Ответ 5

Они имеют совершенно другое значение и вообще не связаны друг с другом.

ORDER BY позволяет сортировать результирующий набор в соответствии с различными критериями, например, сначала сортировать по имени из az, а затем сортировать по цена самая высокая до самой низкой.

(ORDER BY name, цена DESC)

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

Ответ 6

Простой, ORDER BY упорядочивает данные и группы GROUP BY или объединяет данные.

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

Предположим, что вы запускаете запрос как ORDER BY (student_roll_number), он покажет вам результат в порядке возрастания числа номеров учащихся. Здесь запись student_roll_number может происходить более одного раза.

В GROUP BY случае мы используем это с агрегатными функциями и группируем данные в соответствии с агрегатной функцией, и получаем результат. Здесь, если наш запрос имеет SUM (marks) вместе с GROUP BY (student_first_name), он покажет сумму оценок учеников, принадлежащих к каждой группе (где все члены группы будут иметь одинаковое имя).

Ответ 7

GROUP BY используется для группировки строк в элементе select, как правило, при объединении строк (например, вычисление итогов, средних и т.д. для набора строк с одинаковыми значениями для некоторых полей).

ORDER BY используется для упорядочения строк, полученных из оператора select.

Ответ 8

Несколько хороших примеров. Также как добавить свой собственный веб-лист, который дает хорошие четкие примеры, а также позволяет вам выполнить собственный SQL.

SQL Order By

Группа SQL по

Ответ 9

ORDER BY показывает поле в порядке возрастания или убывания. Пока GROUP BY показывает одинаковые имена полей, id и т.д. Только на одном выходе.

Ответ 10

  • GROUP BY объединяет записи по указанному столбцу, который позволяет выполнять функции агрегации для негрупповых столбцов (например, SUM, COUNT, AVG и т.д.). ORDER BY изменяет порядок возврата элементов.
  • Если вы это сделаете SELECT IsActive, COUNT (*) ОТ ГРУППЫ клиентов BY IsActive вы получаете количество активных и неактивных клиентов. Группа агрегировала результаты на основе указанного вами поля. Если вы это сделаете ВЫБЕРИТЕ * ОТ клиентов ЗАКАЗАТЬ НА ИМЯ то вы получите список результатов, отсортированный по имени клиента.
  • Если вы GROUP, результаты не обязательно сортируются; хотя во многих случаях они могут появляться в интуитивном порядке, что не гарантируется предложением GROUP. Если вы хотите, чтобы ваши группы отсортировались, всегда используйте ORDER BY явно после GROUP BY.
  • Сгруппированные данные не могут быть отфильтрованы по предложению WHERE. Данные заказа могут быть отфильтрованы по предложению WHERE.

Ответ 11

Следует отметить, что GROUP BY не всегда требуется как (по крайней мере, в PostgreSQL и, вероятно, в других вариантах SQL), вы можете использовать ORDER BY со списком, и вы все равно можете использовать ASC или DESC за колонка...

SELECT name_first, name_last, dob 
FROM those_guys 
ORDER BY name_last ASC, name_first ASC, dob DESC;