Ответы:
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
age
столбец, в котором Петерс имеет разный возраст, а запрос - ВЫБРАТЬ ИМЯ, ВОЗРАСТ ИЗ ТАБЛИЦЫ ГРУППА ПО ИМЕНИ?
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 |
+----+----------+-----+-----------+----------+
Ниже приведен пример сортировки результатов в порядке возрастания по ИМЕНИ:
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 работает со строками, возвращаемыми запросом, суммируя идентичные строки в одну / отдельную группу и возвращает одну строку со сводкой для каждой группы, используя соответствующую функцию Aggregate в списке SELECT, например COUNT (), SUM (), MIN (), MAX (), AVG () и т. Д.
Теперь, если вы хотите узнать общую сумму зарплаты каждого клиента (имя), запрос GROUP BY будет следующим:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY 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 позволяет вам отсортировать набор результатов по различным критериям, таким как сначала отсортировать по имени от z, а затем отсортировать по цене от наибольшей к наименьшей.
(ЗАКАЗАТЬ ПО НАЗВАНИЮ, ПО УБЫТКУ)
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 используется для группировки строк в выборке, обычно при агрегировании строк (например, вычислении итогов, средних значений и т. Д. Для набора строк с одинаковыми значениями для некоторых полей).
ORDER BY используется для упорядочивания строк, полученных в результате оператора выбора.
Есть несколько хороших примеров. Точно так же, как добавить свой собственный из веб-таблицы, который дает хорошие четкие примеры, а также позволяет вам выполнять свой собственный SQL.
ORDER BY
показывает поле в порядке возрастания или убывания. Хотя GROUP BY
показывает одинаковые имена полей, идентификаторы и т. Д. Только в одном выводе.
Следует отметить, что 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;