Предложение order by
используется для сортировки результатов по критериям, а предложение group by
используется для помещения записей в группы, где критерии являются общими для записей.
Рассмотрим таблицу Test
выглядит так:
Name Number
-----------------
B 1
B 2
C 3
C 4
C 5
A 6
A 7
A 8
Если вы выполните этот запрос:
select Name, Number
from Test
order by Name
В результате вы получите результат со всеми отсортированными записями:
A 6
A 7
A 8
B 1
B 2
C 3
C 4
C 5
Когда вы группируете записи, результатом являются не записи, а группы.Вы можете использовать агрегаты, такие как, например, count
, min
и max
, чтобы получить характеристики, которые включают все записи из этой группы.
Если вы выполните этот запрос:
select Name, count(*) as Cnt, min(Number) as Min, max(Number) as Max
from Test
group by Name
В результате вы получите результат, содержащий три группы, поскольку есть три разных имени:
Name Cnt Min Max
----------------------
B 2 1 2
C 3 3 5
A 3 6 8
Обратите внимание, что группировка не означает, что результат сортируется по критериям, по которым вы группируете.Если вы тоже этого хотите, вы должны использовать и group by
, и order by
, и результат будет отсортирован после группировки.