SQL GROUP BY Statement
As per the name SQL GROUP BY Statement groups all the rows with same values. For example, people in each country, students in each class etc.
There are 5 most used aggregate functions in SQL: AVG,COUNT, MIN, MAX, SUM. This GROUP BY keyword often used with those aggregate functions to group the result set. Let’s take a look at the syntax:
SELECT column(s) FROM table WHERE condition GROUP BY column(s) ORDER BY column(s);
It’s like any other syntax where you select the columns from table and add a condition to it. In this query we need to add GROUP BY keyword to combine those rows and give us one result set.
Let’s take a look at the example.
SELECT COUNT(CustomerID), Country FROM customers GROUP BY Country;
In the example query above, we are counting customers in each country from the table customers. If we remove the keyword, GROUP BY then the query will give us the total number of customers with the name of first country in the table. You can see the results in the DEMO. I’ve included it for comparison purpose only.
We can use the GROUP BY keyword with 2 or more tables with JOIN keyword as well. Let’s take a look at that kind of example.
SELECT merchants.MerchantName,COUNT(orders.OrderID) AS NumberOfOrders FROM orders LEFT JOIN merchants ON orders.MerchantID = merchants.MerchantID GROUP BY MerchantName;
In the query above, we are selecting merchant names from table merchants and then counting orders from the table order applying LEFT JOIN ot both the tables. So the query above counts orders per merchants because of the keyword GROUP BY.