Я думаю, вы неправильно понимаете, что делает GROUP BY
?
Он не ставит все подобные записи рядом друг с другом, это ORDER BY
.Что делает GROUP BY
, так это сворачивает все похожие записи в одну и ту же строку, чтобы разрешить агрегированные вычисления, такие как SUM()
и MIN()
и COUNT()
и т. Д.
Итак, два примера с использованием одного и того же ввода...
id | company_name | employee_name
----+--------------+---------------
1 | zzz | aaa
2 | xxx | bbb
3 | yyy | ccc
4 | zzz | ddd
5 | xxx | eee
Использование ORDER BY
...
SELECT * FROM mytesttable ORDER BY company_name, employee_name
id | company_name | employee_name
----+--------------+---------------
2 | xxx | bbb
5 | xxx | eee
3 | yyy | ccc
1 | zzz | aaa
4 | zzz | ddd
Использование GROUP BY
...
SELECT
company_name,
COUNT(*) number_of_employees,
MAX(id) highest_id_in_company
FROM
mytesttable
GROUP BY
company_name
ORDER BY
company_name
company_name | number_of_employees | highest_id_in_company
--------------+---------------------+-----------------------
xxx | 2 | 5
yyy | 1 | 3
zzz | 2 | 4