You are on page 1of 4

1

Department of Computer Science


Bahria University, Islamabad

Fall 2020

Course Code : CSL-220

Database Management Systems

BS-IT-4AB

Lab Manual 8

Student Name: ________________________________

Enrollment Number: __________________________


1

Lab # 8
 GROUP BY
 Group By Having
_________________________________________________________________________________________

GROUP BY
Group By is used to categorize the retrieved data. For example, you may want to list sales of each
product identified by product id.

The SQL GROUP BY statement is used along with the SQL aggregate functions like SUM to provide means
of grouping the result dataset by certain database table column(s).

The best way to explain how and when to use the SQL GROUP BY statement is by example, and that’s
what we are going to do.

Consider the following database table called EmployeeHours storing the daily hours for each employee
of a factious company:
Employee Date Hours
John Smith 5/6/2004 8
Allan Babel 5/6/2004 8
Tina Crown 5/6/2004 8
John Smith 5/7/2004 9
Allan Babel 5/7/2004 8
Tina Crown 5/7/2004 10
John Smith 5/8/2004 8
Allan Babel 5/8/2004 8
Tina Crown 5/8/2004 9
If the manager of the company wants to get the simple sum of all hours worked by all employees, he
needs to execute the following SQL statement:

SELECT SUM (Hours)


FROM EmployeeHours

But what if the manager wants to get the sum of all hours for each of his employees? To do
that he need to modify his SQL query and use the SQL GROUP BY statement:

SELECT Employee, SUM (Hours) FROM EmployeeHours GROUP BY Employee;

The result of the SQL expression above will be the following:

Employee Hours
John Smith 25
1|Page
Allan Babel 24
Tina Crown 27

Note that there is only one entry for each employee, because we are grouping by the Employee
column.

The SQL GROUP BY clause can be used with other SQL aggregate functions, for example SQL AVG:

SELECT Employee, AVG (Hours) FROM EmployeeHours GROUP BY Employee;

The result of the SQL statement above will be:


Employee Hours
John Smith 8.33
Allan Babel 8
Tina Crown 9

We can also group by the date column too, to find out what is the total number of hours worked on
each of the dates into the table:

SELECT Date, SUM (Hours) FROM EmployeeHours GROUP BY Date


Date Hours
5/6/2004 24
5/7/2004 27
5/8/2004 25

Attempt Following Questions from lab task: 1, 2, 3, 4, 5

SQL HAVING

• Sometimes we want to retrieve the values of these functions for only those groups that
satisfy certain conditions

• The HAVING-clause is used for specifying a selection condition on groups (rather than on
individual tuples)

What is SQL HAVING?

• The SQL HAVING clause enables conditions at the aggregate level. It is used instead of the
WHERE clause when Aggregate Functions are used.

Why Use SQL HAVING?


2|Page
3

• The HAVING clause is used to SELECT information based aggregate information. For example,
one may want to list sales representatives that have sales totaling over $10,000. This is very
useful for analytical reporting.

SYNTAX
SELECT <column_name1>, <column_name2> <aggregate_function>
FROM <table_name>
GROUP BY <column_name1>, <column_name2>
HAVING <having_condition>

EXAMPLE

Select title wise count of employees and average salary if number of employees for that title is more
than two.

SELECT job, count (*),AVG (SAL) FROM EMP GROUP BY JOB HAVING COUNT (*)> 2

Attempt Following Question from lab task: 7

Lab Tasks
1. Display the department-wise total salary given to the employees of an organization
2. Display the dept-wise number of employees working in an organization.
3. Display the number of employees department-wise and job-wise. The output look like as:
DeptNo Job Count(*)
10 CLERK 1
10 MANAGER 1
20 ----------- -----------
20 ----------- -----------
30 ----------- -----------
4.

5. Extend the previous query output and incorporate the average salary of employees
department-wise and job-wise.
6. How many employees in each department have salaries greater than 1000;
7. Select department where average salary is greater than 2000;

3|Page

You might also like