|
The effect of the GROUP BY DNO operation is:
|
It separates the tuples in different groups based on the value in the DNO attribute
After forming groups:
|
We can apply set functions on each group separately !!!
Example: total salary paid to employees per department:
|
We can also use set functions to select certain groups !!!
Example: find departments with payroll > $100,000
|
You can see here how we used a set function to select certain groups !!!
Example: find departments with payroll > $100,000
Expressed in SQL:
SELECT dno, sum(salary) FROM employee GROUP BY dno HAVING sum(salary) > 100000 |
|
|
SELECT dno, sum(salary)
FROM employee
WHERE sex = 'M'
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- --------
123456789 John Smith M 5 30000.00
333445555 Frankl Wong M 5 40000.00
999887777 Alicia Zelaya F 4 25000.00
987654321 Jennif Wallace F 4 43000.00
666884444 Ramesh Narayan M 5 38000.00
453453453 Joyce English F 5 25000.00
987987987 Ahmad Jabbar M 4 25000.00
888665555 James Borg M 1 55000.00
|
SELECT dno, sum(salary)
FROM employee
WHERE sex = 'M'
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- -------- (non-relevant
123456789 John Smith M 5 30000.00 attributes
333445555 Frankl Wong M 5 40000.00 omitted)
999887777 Alicia Zelaya F 4 25000.00
987654321 Jennif Wallace F 4 43000.00
666884444 Ramesh Narayan M 5 38000.00
453453453 Joyce English F 5 25000.00
987987987 Ahmad Jabbar M 4 25000.00
888665555 James Borg M 1 55000.00
|
SELECT dno, sum(salary)
FROM employee
WHERE sex = 'M'
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- -------- (non-relevant
123456789 John Smith M 5 30000.00 attributes
333445555 Frankl Wong M 5 40000.00 omitted)
666884444 Ramesh Narayan M 5 38000.00
987987987 Ahmad Jabbar M 4 25000.00
888665555 James Borg M 1 55000.00
|
SELECT dno, sum(salary)
FROM employee
WHERE sex = 'M'
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- --------
123456789 John Smith M 5 30000.00
333445555 Frankl Wong M 5 40000.00 (1 group)
666884444 Ramesh Narayan M 5 38000.00
987987987 Ahmad Jabbar M 4 25000.00 (1 group)
888665555 James Borg M 1 55000/00 (1 group)
|
SELECT dno, sum(salary)
FROM employee
WHERE sex = 'M'
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- --------
123456789 John Smith M 5 30000.00
333445555 Frankl Wong M 5 40000.00 (1 group)
666884444 Ramesh Narayan M 5 38000.00
|
SELECT dno, sum(salary) ===> dno sum(salary)
FROM employee --- ---------------
WHERE sex = 'M' 5 108000.00
GROUP BY dno
HAVING count(*) > 2
Result so far:
ssn fname lname sex dno salary
--------- ------ -------- --- --- --------
123456789 John Smith M 5 30000.00
333445555 Frankl Wong M 5 40000.00 (1 group)
666884444 Ramesh Narayan M 5 38000.00
|