Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

SQL GROUP BY statement


May 16, 2021 SQL


Table of contents


SQL GROUP BY statement


Aggregate functions often need to add GROUP BY statements.

GROUP BY statements are typically used with collection functions (COUNT, MAX, MIN, SUM, AVG) to group the result sets by one or more columns.


GROUP BY statement


The GROUP BY statement is used to group the result set based on one or more columns in conjunction with the Aggregate function.

SQL GROUP BY syntax

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

Demonstrate the database


In this tutorial, we'll use the well-known Northwind sample database.

Here's the data from the "Customers" table:

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 example


The following SQL statement lists the number of customers for each country:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

The following SQL statement lists the number of customers in each country, sorted from highest to thyst:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

Demonstrate the database


Here's an option for the Order table in the Rosevin 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 select from the Shippers table:

ShipperID ShipperName
1 Speedy Express
2 United Package
3 Federal Shipping

GROUP BY uses the JOIN example


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

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