Это трюк с группировкой; чтобы подсчитать, нужно потерять детали, но если затем попытаться вернуть детали, разделив группу на более мелкие куски, у нее больше не будет столько элементов в каждой группе.
Это означает, что вам нужно либо иметь два запроса, один, который группирует, и другой, который дает детали, а затем объединить их вместе:
SELECT *
FROM
orders o
INNER JOIN
(SELECT count(*) as ct FROM orders GROUP BY customer_number) g
ON o.customer_number = g.customer_number
Или вы можете использовать аналитическую функцию, которая концептуально делает то же самое, но немного более продвинутый (возможно, еще не научили):
SELECT
o.*,
COUNT(*) OVER(PARTITION BY customer_number) as ct
FROM
orders o
Примечание; Я понятия не имею, на какие столбцы вы действительно хотите рассчитывать и группировать; Я выбрал номер клиента здесь, потому что я знаю, что он существует - эти запросы дадут количество заказов для каждого клиента плюс все детали их. Ваша основная методика использования GROUP BY * состоит в том, чтобы выбрать столбцы, для которых вы хотите подсчитать каждый уникальный вариант (например, если вы хотите узнать, сколько сотрудников на отдел вы сгруппируете по Department_id, потому что, если 50 сотрудников разделены поровну. в 10 отделах в столбце Department_id должно быть 10 различных чисел, каждое из которых повторяется 5 раз - GROUP BY выдаст результирующий набор из 10 строк по одной для каждого отдельного идентификатора отдела, а COUNT - 5 в каждой строке, потому что это количество строк. раньше были свернуты в одну строку)
Если вы хотите, например, подсчитать все заказы в системе, вы можете сделать:
SELECT *
FROM
orders o
CROSS JOIN
(SELECT count(*) as ct FROM orders) g
Мы должны использовать перекрестное соединение здесь, потому что мы не у нас больше нет столбцов, к которым мы присоединяемся - подзапрос просто вычисляет один результат, который мы хотим отобразить в каждой строке, и именно это делает перекрестное соединение: соединяет каждую строку слева с каждой строкой справа
SELECT
o.*,
COUNT(*) OVER() as ct
FROM
orders o
Также обратите внимание, что ваше задание требует ро WS для вывода в определенном порядке. Я не выполнил эту часть, но оставлю это как упражнение для вас - не забывайте это, потому что это часть спецэффекта c и будет помечено