SQL GROUP BY Statement
Aggregate functions often need an added GROUP BY statement.
The GROUP BY Statement
The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns.
SQL GROUP BY Syntax
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name |
SQL GROUP BY Example
We have the following "Orders" table:
| O_Id |
OrderDate |
OrderPrice |
Customer |
| 1 |
2008/11/12 |
1000 |
Hansen |
| 2 |
2008/10/23 |
1600 |
Nilsen |
| 3 |
2008/09/02 |
700 |
Hansen |
| 4 |
2008/09/03 |
300 |
Hansen |
| 5 |
2008/08/30 |
2000 |
Jensen |
| 6 |
2008/10/04 |
100 |
Nilsen |
Now we want to find the total sum (total order) of each customer.
We will have to use the GROUP BY statement to group the customers.
We use the following SQL statement:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer |
The result-set will look like this:
| Customer |
SUM(OrderPrice) |
| Hansen |
2000 |
| Nilsen |
1700 |
| Jensen |
2000 |
Nice! Isn't it? :)
Let's see what happens if we omit the GROUP BY statement:
| SELECT Customer,SUM(OrderPrice) FROM Orders |
The result-set will look like this:
| Customer |
SUM(OrderPrice) |
| Hansen |
5700 |
| Nilsen |
5700 |
| Hansen |
5700 |
| Hansen |
5700 |
| Jensen |
5700 |
| Nilsen |
5700 |
The result-set above is not what we wanted.
Explanation of why the above SELECT statement cannot be used: The SELECT statement above has two columns specified (Customer and SUM(OrderPrice).
The "SUM(OrderPrice)" returns a single value (that is the total sum of the "OrderPrice" column), while "Customer" returns 6 values
(one value for each row in the "Orders" table). This will therefore not give us the correct result. However, you have seen that the GROUP BY statement solves this problem.
GROUP BY More Than One Column
We can also use the GROUP BY statement on more than one column, like this:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate |
Create a free Flash website with our simple, online web design editing platform. Stunning templates
and user-friendly tools make website building easy and fun.
Start Creating your free website now!

Need an easy way to get data into XML, or transform XML to another format?
MapForce lets you map XML data to/from any combination of XML, database, flat file,
Excel 2007, XBRL, or Web services data. Then it transforms data instantly or
auto-generates royalty-free code for recurrent conversions.
New features in Version 2010!
- Easy-to-use, graphical data mapping interface
- Instant data transformation
- XSLT 1.0/2.0 and XQuery code generation
- Java, C#, and C++ code generation
- Advanced data processing functions
- Support for all major relational databases including SQL Server, IBM DB2, Oracle, and more
- Visual Studio & Eclipse integration
- Available in 32-bit and 64-bit versions
Download a fully-functional trial today!
|
|
|
|