Thursday 6 September 2012

SQL Group By


  

 

SQL Having         Examples of SQL Group By and SQL Having          Null in SQL Group By

 

 It is a clause in SQL, which specifies how to report the output of the query. Allows one to define a subset of the values of a particular field and to apply an aggregate function to the subsets.

 

We normally use a GROUP BY clause in conjunction with an aggregate expression (like SUM, COUNT etc).

 

 

Example 1 of SQL Group BY

 

Calculate the total sales for each store in the following table

 

 

Store_name

Sales

Date

London

$1500

Jan-05-1999

San Diego

$250

Jan-07-1999

London

$300

Jan-08-1999

Boston

$700

Jan-08-1999

 

 

 

First, we need to make sure we select the store name as well as total sales.

 

SELECT store_name,SUM (Sales)

FROM Store_Information;

 

Second, we need to make sure that all the sales figures are grouped by stores.

 

SELECT store_name, SUM (Sales)

FROM Store_Information

GROUP BY store_name;

 

So the final query is:

 

SELECT store_name, SUM (Sales)

FROM Store_Information

GROUP BY store_name;

 

The result is:

 

 

Store_name

SUM (Sales)

London

$1800

San Diego

$250

Boston

$700

 

 

 

Example 2 of SQL Group BY

 

SELECT COUNT (*) FROM t_state

 

The above statement returns the total number of rows in the table. We can use GROUP BY to count the number of offices in each state.

 

With GROUP BY, the table is split into groups by state, and COUNT (*) is applied to each group in turn.

 

SELECT state, COUNT (*)

FROM t_state

GROUP BY state;

 

Important points to remember:

 

Group by cannot use column aliasing. A GROUP BY clause must contain the column or expressions on which to perform the grouping operation. For example:

 

Incorrect way:

 

Select deptno as department,count(*) as cnt

From emp

Group by department;

 

Correct way is:

 

Select deptno as department, count (*) as cnt

From emp

Group by deptno;

 

 

What is the difference between the outputs of the following two queries?

 

Statement 1:

 

SELECT COUNT (*),SUM (comm)

FROM hr.employees;

 

 

 Statement 2:

 

SELECT COUNT (comm), SUM (comm)

FROM hr.employees;

 

The COUNT (*) will count all rows in the table.

 

The COUNT (comm) will count only the number commission values that appear in the table. If there are any rows with a NULL commission, statement 2 will not count them.

 

Restriction on SELECT Lists with Aggregation

 

If any aggregation is used, then each element of a SELECT clause must either be aggregated or appear in a group-by clause. i.e. as a rule, when using GROUP BY and aggregate functions, any items in the SELECT list not used as an argument to an aggregate function must be included in the GROUP BY clause.




No comments:

Post a Comment