Back to SQL Notes
Topic #35

SQL Group By

GROUP BY collapses rows that share a value so aggregates run per group — sales by city, orders by month. It is the engine behind every grouped report.


The SQL GROUP BY Statement

The GROUP BY statement is used to group rows that have the same values into summary rows, like "Find the number of customers in each country".

The GROUP BY statement is almost always used in conjunction with aggregate functions, like COUNT(), MAX(), MIN(), SUM(), AVG(), to perform calculations on each group.

GROUP BY Syntax

SELECT column1, aggregate_function(column2), column3, ...

FROM table_name

WHERE condition

GROUP BY column1, column3

ORDER BY column_name;

Demo Database

Below is a selection from the "Customers" table in the Northwind sample database:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

SQL GROUP BY Examples

The following SQL returns the number of customers in each country:

Example

  SELECT Country, COUNT(CustomerID) AS [Number of Customers]
FROM Customers
GROUP BY Country;

The following SQL returns the number of customers in each country, sorted from high to low:

Example

SELECT Country, COUNT(CustomerID) AS [Number of Customers]

FROM Customers

GROUP BY Country

ORDER BY COUNT(CustomerID) DESC;

Demo Database

Below is a selection from the "Orders" table in the Northwind sample database:

OrderID CustomerID EmployeeID OrderDate ShipperID
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

And a selection from the "Shippers" table:

ShipperID ShipperName
1 Speedy Express
2 United Package
3 Federal Shipping

GROUP BY With JOIN Example

The following SQL returns the number of orders sent by each shipper:

Example

  SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM
  Orders
LEFT JOIN Shippers
ON Orders.ShipperID = Shippers.ShipperID

  GROUP BY ShipperName;

Want to go beyond the notes?

Join Coding Now Tech Institute's SQL course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

SQL Group By – FAQs

Quick answers about learning SQL Group By in SQL.

This free note from Coding Now Tech Institute explains SQL Group By in SQL — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every SQL topic on Coding Now Tech Institute, including SQL Group By, is 100% free with no signup required.
With focused practice, most students grasp SQL Group By in 1–3 days from these notes; pairing it with Coding Now Tech Institute's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the Coding Now Tech Institute Community (/community) — expert instructors answer within 24 hours.
Call NowEnroll Now