Группировка в соединениях
В выражениях INNER/OUTER JOIN также можно использовать группировку. Например, выведем для каждого пользователя количество заказов, которые он сделал:
1 2 3 4 | SELECT FirstName, COUNT(Orders.Id)FROM Customers JOIN Orders ON Orders.CustomerId = Customers.IdGROUP BY Customers.Id, Customers.FirstName; |

Критерием группировки выступают Id и имя покупателя. Выражение SELECT выбирает имя покупателя и количество заказов, используя столбец Id из таблицы Orders.
Так как это INNER JOIN, то в группах будут только те покупатели, у которых есть заказы.
Если необходимо вывести даже тех покупателей, у которых нет заказов, то применяется OUTER JOIN:
1 2 3 4 | SELECT FirstName, COUNT(Orders.Id)FROM Customers LEFT JOIN Orders ON Orders.CustomerId = Customers.IdGROUP BY Customers.Id, Customers.FirstName; |

Или выведем товары с общей суммой сделанных заказов:
1 2 3 4 5 | SELECT Products.ProductName, Products.Manufacturer, SUM(Orders.ProductCount * Orders.Price) AS UnitsFROM Products LEFT JOIN OrdersON Orders.ProductId = Products.IdGROUP BY Products.Id, Products.ProductName, Products.Manufacturer |
