Когда вы используете это вообще? Примеры приветствуются!
Я имею в виду MySql, но не могу представить, что концепция отличается от другой СУБД
Когда вы используете это вообще? Примеры приветствуются!
Я имею в виду MySql, но не могу представить, что концепция отличается от другой СУБД
ORDER BY изменяет порядок возврата элементов.
GROUP BY будет собирать записи по указанным столбцам, что позволяет выполнять функции агрегации для негрупповых столбцов (например, SUM, COUNT, AVG и т.д.).
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
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 |
+---------+-------------+
Разница заключается именно в том, что подразумевается в названии: группа выполняет операцию группировки и порядок по типам.
Если вы выполните SELECT * FROM Customers ORDER BY Name
, вы получите список результатов, отсортированный по имени клиента.
Если вы делаете SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
, вы получаете количество активных и неактивных клиентов. Группа агрегировала результаты на основе указанного вами поля.
Они имеют совершенно другое значение и вообще не связаны друг с другом.
ORDER BY позволяет сортировать результирующий набор в соответствии с различными критериями, например, сначала сортировать по имени из az, а затем сортировать по цена самая высокая до самой низкой.
(ORDER BY name, цена DESC)
GROUP BY позволяет вам принять ваш результирующий набор, сгруппировать его в логические группы и затем запустить агрегированные запросы в этих группах. Например, вы можете выбрать всех сотрудников, сгруппировать их по месту их работы и рассчитать среднюю зарплату всех сотрудников каждого места на рабочем месте.
Простой, ORDER BY
упорядочивает данные и группы GROUP BY
или объединяет данные.
ORDER BY
заказывает набор результатов в соответствии с указанным полем по умолчанию в порядке возрастания.
Предположим, что вы запускаете запрос как ORDER BY (student_roll_number)
, он покажет вам результат в порядке возрастания числа номеров учащихся. Здесь запись student_roll_number
может происходить более одного раза.
В GROUP BY
случае мы используем это с агрегатными функциями и группируем данные в соответствии с агрегатной функцией, и получаем результат. Здесь, если наш запрос имеет SUM (marks)
вместе с GROUP BY (student_first_name)
, он покажет сумму оценок учеников, принадлежащих к каждой группе (где все члены группы будут иметь одинаковое имя).
GROUP BY используется для группировки строк в элементе select, как правило, при объединении строк (например, вычисление итогов, средних и т.д. для набора строк с одинаковыми значениями для некоторых полей).
ORDER BY используется для упорядочения строк, полученных из оператора select.
Несколько хороших примеров. Также как добавить свой собственный веб-лист, который дает хорошие четкие примеры, а также позволяет вам выполнить собственный SQL.
ORDER BY
показывает поле в порядке возрастания или убывания. Пока GROUP BY
показывает одинаковые имена полей, id и т.д. Только на одном выходе.
Следует отметить, что 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;