Professional Documents
Culture Documents
Fall 2020
BS-IT-4AB
Lab Manual 8
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:
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:
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:
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:
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)
• The SQL HAVING clause enables conditions at the aggregate level. It is used instead of the
WHERE clause when Aggregate Functions are used.
• 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
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