How To Divide Query Output into Multiple Groups with the GROUP BY Clause in MS SQL Server?

Submitted by: Administrator
Sometimes, you want to divide the query output into multiple groups, and apply group functions on each individual groups. Dividing query output into multiple groups can be done with the GROUP BY clause. Here is the syntax of a SELECT statement with a GROUP BY clause.

SELECT group_level_fields FROM source_tables
WHERE search_condition
GROUP BY group_by_expression

* group_by_express - An list of columns to be used as the group criteria - Rows that have the same combination of values of there columns form a single group.
* group_level_fields - An list of selection expressions that can be evaluated at the group level.

The final output of the SELECT statement is the resulting values of group_level_fields for each group. The following script gives you a good GROUP BY example with a single column as the group_by_expression. In this case, rows with the same value of this column will be considered as a single group.

SELECT tag, COUNT(*), MAX(counts), MIN(created)
FROM ggl_links GROUP BY tag
GO<pre>
tag COUNT(*) MAX(counts) MIN(created)
DBA 3 972 2005-01-01
DEV 2 439 2004-01-01
SQA 2 828 2003-01-01</pre><br>Notice that, column "tag" can also be used in group_level_fields, because it is used as the group_by_expression, and becomes a constant for any given group.
Submitted by: Administrator

Read Online MS SQL Server Job Interview Questions And Answers