0% found this document useful (0 votes)
3 views63 pages

2.1-Dql Adc - Part 1

Uploaded by

sarahshahzad8306
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views63 pages

2.1-Dql Adc - Part 1

Uploaded by

sarahshahzad8306
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

ADVANCED DATABASE CONCEPTS

INSTRUCTOR: RABBIYA YOUNAS


LECTURE OUTLINE
 SQL-Introduction
 Data Query Language (DQL)
 SELECT
 WHERE
 FROM
 GROUP BY
 HAVING

2
SQL

3
STRUCTURED QUERY LANGUAGE
STRUCTURED QUERY LANGUAGE
DDL — Data Definition Language
Core concept:
DDL is used to define or change the structure of database
objects like tables.
It answers:
• What table should exist?
• What columns should it have?
• Should we remove or change a table?
DATA SELECTION

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY


FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
id name dept salary
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 60000
4 Ayesha HR 65000
5 Bilal IT 55000

SELECT dept, COUNT(*) AS total_employees


FROM Employees
WHERE salary >= 55000
GROUP BY dept
HAVING COUNT(*) > 1
ORDER BY total_employees DESC;

Dry run step by step 7


FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t

1 Ali IT 50000
SELECT dept, COUNT(*)
2 Sara HR 70000 1) FROM Employees
3 Ahmed IT 60000 FROM Employees
4 Ayesha HR 65000 i dep
WHERE salary >= 55000 d
name
t
salary
5 Bilal IT 55000
1 Ali IT 50000

GROUP BY dept 2 Sara HR 70000

3 Ahmed IT 60000
HAVING COUNT(*) > 1 4 Ayesha HR 65000

5 Bilal IT 55000
ORDER BY
total_employees DESC;

8
FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t

1 Ali IT 50000
SELECT dept, COUNT(*)
2 Sara HR 70000 2) WHERE salary >= 55000
3 Ahmed IT 60000 FROM Employees
4 Ayesha HR 65000
WHERE salary >= 55000 id name dept salary
5 Bilal IT 55000

2 Sara HR 70000
GROUP BY dept
3 Ahmed IT 60000
HAVING COUNT(*) > 1 4 Ayesha HR 65000

5 Bilal IT 55000
ORDER BY
total_employees DESC;

9
FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t

1 Ali IT 50000
SELECT dept, COUNT(*) 3) GROUP BY dept
2 Sara HR 70000

3 Ahmed IT 60000 FROM Employees HR group:


4 Ayesha HR 65000 Sara
WHERE salary >= 55000 Ayesha
5 Bilal IT 55000

GROUP BY dept IT group:


Ahmed
HAVING COUNT(*) > 1 Bilal

ORDER BY So logically the


total_employees DESC; groups are:
HR → 2 rows
IT → 2 rows
10
FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t

1 Ali IT 50000
SELECT dept, COUNT(*) 4) HAVING COUNT(*) > 1
2 Sara HR 70000

3 Ahmed IT 60000 FROM Employees Now filter the groups.


4 Ayesha HR 65000 HR count = 2 → keep
WHERE salary >= 55000 IT count = 2 → keep
5 Bilal IT 55000

Both groups remain.


GROUP BY dept

HAVING COUNT(*) > 1

ORDER BY
total_employees DESC;

11
FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t [Link] dept, COUNT(*) AS
1 Ali IT 50000
SELECT dept, COUNT(*) total_employees
2 Sara HR 70000

3 Ahmed IT 60000 FROM Employees


4 Ayesha HR 65000
WHERE salary >= 55000 total_emplo
dept
5 Bilal IT 55000
yees
GROUP BY dept HR 2
IT 2
HAVING COUNT(*) > 1

ORDER BY
total_employees DESC;

12
FROM → WHERE → GROUP BY → HAVING →
SELECT → ORDER BY
i dep
name salary
d t 6) ORDER BY total_employees
1 Ali IT 50000
SELECT dept, COUNT(*) DESC
2 Sara HR 70000

3 Ahmed IT 60000 FROM Employees


4 Ayesha HR 65000
WHERE salary >= 55000 dept total_employees
5 Bilal IT 55000
HR 2
GROUP BY dept
IT 2
HAVING COUNT(*) > 1

ORDER BY
total_employees DESC;

13
SELECT
SELECT column1, column2 Student
id name age
FROM table_name;
1 Ali 20
2 Sara 21
3 Ahmed 19

name age
SELECT name, age Ali 20
FROM students;
Sara 21
Ahmed 19
14
SELECT * (ALL COLUMNS)
 Select all attributes from a Students
table.
id name age
1 Ali 20
2 Sara 21
3 Ahmed 19

Students
SELECT *
id name age
FROM students;
1 Ali 20
2 Sara 21
3 Ahmed 19 15
SELECT TABLE.* (ALL COLUMNS FROM ONE TABLE)
employee table
 Useful in joins.
id name age position
Students
id name age 1 Hassan 30 Manager
1 Ali 20 2 Fatima 26 Engineer
2 Sara 21
3 Usman 28 Accountant
3 Ahmed 19

employee table
SELECT E.*
id name age position
FROM employees E;
1 Hassan 30 Manager

2 Fatima 26 Engineer

3 Usman 28 Accountant 16
SELECT [Link]-NAME (EXPLICIT ATTRIBUTE
(TABLE ALIAS USED))
 Clear and safe when multiple employee table
tables exist.
id name age position
Students
id name age 1 Hassan 30 Manager
1 Ali 20 2 Fatima 26 Engineer
2 Sara 21
3 Usman 28 Accountant
3 Ahmed 19

employee table
SELECT [Link]
name
FROM employees E;
Hassan

Fatima

Usman 17
SELECT WITH ALIAS (AS)
 Rename column in output (for employee table
readability).
id name age position
Students
id name age 1 Hassan 30 Manager
1 Ali 20 2 Fatima 26 Engineer
2 Sara 21
3 Usman 28 Accountant
3 Ahmed 19

employee table
SELECT name AS 'Employee Name'
Employee Name
FROM employees;
Hassan

Fatima

Usman 18
SELECT WITH DISTINCT (REMOVE DUPLICATES)
id name department
1 Ali IT
2 Sara HR
3 Ahmed IT
4 Zain Finance
5 Hina HR
6 Bilal IT

SELECT DISTINCT department department


FROM employees; IT
HR
Finance 19
SELECT WITH DISTINCT (REMOVE DUPLICATES)
DISTINCT *
id name department
1 Ali IT
2 Sara HR
2 Sara HR
3 Ahmed IT
4 Zain Finance
4 Zain Finance

departm
id name
ent
SELECT DISTINCT *
1 Ali IT
FROM employees;
2 Sara HR
3 Ahmed IT
20
4 Zain Finance
SELECT WITH AGGREGATE FUNCTIONS
 (SUM, COUNT, AVG, MAX, MIN) id name salary
1 Ali 50000
2 Sara 60000
3 Ahmed 55000
4 Zain 70000
5 Hina 60000

SELECT SUM(salary) AS total_salary


FROM employees; total_salary
295000

21
SELECT WITH SCALAR EXPRESSION
 Calculation in output.
id name salary
1 Ali 50000
2 Sara 60000
3 Ahmed 55000
4 Zain 70000

bonus
SELECT salary * 0.10 AS bonus 5000
FROM employees; 6000
5500
7000
22
SIMPLE FROM (SINGLE TABLE)
SELECT column1, column2 Student
id name age
FROM table_name;
1 Ali 20
2 Sara 21
3 Ahmed 19

name age
SELECT name, age Ali 20
FROM student;
Sara 21
Ahmed 19
23
FROM WITH TABLE ALIAS
 Short name for table (very employee table
common in joins).
Students id name age position
id name age 1 Hassan 30 Manager
1 Ali 20 2 Fatima 26 Engineer
2 Sara 21 3 Usman 28 Accountant
3 Ahmed 19

employee table
SELECT E.*
id name age position
FROM employees E;
1 Hassan 30 Manager

2 Fatima 26 Engineer

3 Usman 28 Accountant 24
FROM WITH MULTIPLE TABLES (CROSS JOIN –
CARTESIAN PRODUCT)
 Combines every row of both employee
tables.
Students id name age position
id name age
1 Hassan 30 Manager
1 Ali 20
2 Fatima 26 Engineer
2 Sara 21
3 Usman 28 Accountant
3 Ahmed 19

SELECT *
FROM students, employee;

25
FROM WITH MULTIPLE TABLES (CROSS JOIN –
CARTESIAN PRODUCT)
student_ student_ student_ emp_na
emp_id emp_age position
id name age me
Manage
1 Ali 20 1 Hassan 30
r 3 students × 3
1 Ali 20 2 Fatima 26
Enginee employees = 9 rows
r
Account
1 Ali 20 3 Usman 28
ant
Manage
2 Sara 21 1 Hassan 30
r
Enginee
2 Sara 21 2 Fatima 26
r
Account
2 Sara 21 3 Usman 28
ant
Manage
3 Ahmed 19 1 Hassan 30
r
Enginee
3 Ahmed 19 2 Fatima 26
r 26
Account
3 Ahmed 19 3 Usman 28
ant
FROM WITH JOINS [ WE WILL STUDY JOINS IN NEXT
LECTURE IN DETAIL ]
Join Type FROM Clause Syntax

INNER JOIN FROM A INNER JOIN B ON condition

LEFT JOIN FROM A LEFT JOIN B ON condition

RIGHT JOIN FROM A RIGHT JOIN B ON condition

FROM A FULL OUTER JOIN B ON


FULL OUTER JOIN
condition
CROSS JOIN FROM A CROSS JOIN B
NATURAL JOIN FROM A NATURAL JOIN B

SELF JOIN FROM A A1 JOIN A A2 ON condition

EQUI JOIN FROM A JOIN B ON [Link] = [Link]

THETA JOIN FROM A JOIN B ON [Link] < [Link]

JOIN USING FROM A JOIN B USING (common_column)

27
OUTER JOIN (General) FROM A OUTER JOIN B ON condition
1. SIMPLE WHERE [WHERE WITH COMPARISON
OPERATORS (=, >, <, >=, <=, <>)]
 The WHERE clause is used to filter rows based on a
condition.
Table: Employees SELECT *
ID Name Salary FROM Employees
WHERE salary > 50000;
1 Ali 40000
2 Sara 60000
3 Ahmed 55000 ID Name Salary
4 Ayesha 30000 2 Sara 60000
3 Ahmed 55000

28
2. WHERE WITH AND
 All conditions must be true.
SELECT *
Table: Employees FROM Employees
WHERE dept = 'IT' AND salary > 60000;
ID Name Dept Salary
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary


3 Ahmed IT 65000
29
[Link] WITH OR
 ◦ At least one condition must be true.
SELECT *
Table: Employees FROM Employees
WHERE dept = 'IT' OR salary > 60000;
ID Name Dept Salary
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000 ID Name Dept Salary
4 Ayesha IT 40000 1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000
30
4. WHERE WITH NOT
 NOT reverses the condition (opposite result).
SELECT *
Table: Employees FROM Employees
WHERE NOT dept = 'IT';
ID Name Dept Salary
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000
ID Name Dept Salary
2 Sara HR 70000

31
5. WHERE WITH BETWEEN
 BETWEEN is used to filter values within a range
(inclusive). SELECT *
Table: Employees FROM Employees
ID Name Dept Salary WHERE salary BETWEEN 45000
AND 65000;
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary


1 Ali IT 50000
3 Ahmed IT 65000 32
6. WHERE WITH IN
 Matches multiple possible values.
SELECT *
Table: Employees FROM Employees
ID Name Dept Salary WHERE dept IN ('IT', 'HR');

1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary


1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
33
4 Ayesha IT 40000
DIFFERENCE
WHERE WITH BETWEEN ... WHERE WITH IN
BETWEEN is used for a range of values.
IN is used for specific listed values.

SELECT *
FROM students
WHERE age BETWEEN 18 AND 21;

SELECT *
FROM students
WHERE age IN (18, 21, 22);
34
7. WHERE WITH NOT IN

 NOT IN is used to exclude multiple values.

SELECT *
Table: Employees
FROM Employees
ID Name Dept Salary
WHERE dept NOT IN
1 Ali IT 50000
('IT', 'HR');
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary


(No Rows)
35
[Link] WITH LIKE (PATTERN MATCHING)

 ◦ LIKE is used to search for a pattern in text.

SELECT *
Table: Employees
FROM Employees
ID Name Dept Salary
WHERE Name LIKE
1 Ali IT 50000
'A%';
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary


1 Ali IT 50000
36

3 Ahmed IT 65000
4 Ayesha IT 40000
[Link] WITH LIKE (PATTERN MATCHING)

37
9. WHERE WITH IS NULL

 Checks for NULL values.

SELECT *
Table: Employees
FROM Employees
ID Name Dept Salary
WHERE dept IS NULL;
1 Ali IT 50000
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha null 40000

ID Name Dept Salary


4 Ayesha NULL 40000
38

10. WHERE with IS NOT NULL: not looking for null values
11. WHERE WITH SUBQUERY

 Uses result of another query for filtering.

Table: Employees SELECT *


ID Name Dept Salary FROM Employees
1 Ali IT 50000 WHERE salary > (
2 Sara HR 70000 SELECT AVG(salary)
3 Ahmed IT 65000 FROM Employees
4 Ayesha IT 40000 );

ID Name Dept Salary


2 Sara HR 70000
39
3 Ahmed IT 65000
11. WHERE WITH SUBQUERY
 Step 1: Calculate Average Salary
50000+70000+65000+40000
 Average = = 56250
4
 So:
 Ali’s salary = 50000

 Sara’s salary = 70000

 Ahmed’s salary = 65000

 Ayesha’s salary = 40000

 Average salary = 56250

ID Name Dept Salary


2 Sara HR 70000 40
3 Ahmed IT 65000
12. WHERE WITH EXISTS
 EXISTS checks if a subquery returns any rows.

Table: Employees SELECT Name, Dept


ID Name Dept Salary FROM Employees e
1 Ali IT 50000 WHERE EXISTS (
2 Sara HR 70000 SELECT 1
3 Ahmed IT 65000 FROM Employees
4 Ayesha IT 40000 WHERE dept = 'HR'
);
Name Dept “If the subquery finds any matching
Ali IT record, EXISTS becomes true and
Sara HR the main query runs.” 41

Ahmed IT “Does any HR employee exist in the


whole table?”
Ayesha IT
12. WHERE WITH EXISTS
Employees Projects
ID Name Dept EmpID Project
1 Ali IT 1 Website
2 Sara HR 3 App
3 Ahmed IT

SELECT Name
FROM Employees e
WHERE EXISTS ( Name
SELECT 1 Ali
FROM Projects p Ahmed
WHERE [Link] = [Link]
);

42
UNCORRELATED EXISTS
 Inner query is not linked to outer query.

ID Name Department
SELECT Name, Department
1 Areeba CS FROM Students s
2 Bilal SE WHERE EXISTS (
SELECT 1
3 Hamza IT
FROM Students
WHERE Department = 'SE'
);

Name Department
In this case
Areeba CS Exist return Yes or No
Bilal SE
Hamza IT
43
CORRELATED EXISTS
 Inner query is linked to the outer query.

ID Name StudentID BookName


1 Areeba 1 Database Systems
2 Bilal Computer
3
3 Hamza Networks

SELECT Name Explanation


FROM Students s Now the subquery checks for each student:
WHERE EXISTS ( Areeba → has a matching book record → yes
SELECT 1 Bilal → no matching book record → no
FROM LibraryBooks l Hamza → has a matching book record → yes
WHERE [Link] = [Link]
); 44
CORRELATED EXISTS
 Inner query is linked to the outer query.

ID Name StudentID BookName


1 Areeba 1 Database Systems
2 Bilal Computer
3
3 Hamza Networks

SELECT Name
FROM Students s
Name
WHERE EXISTS (
SELECT 1 Areeba
FROM LibraryBooks l Hamza
WHERE [Link] = [Link]
); 45
[Link] WITH ALL
 ALL compares a value with all values from a subquery.

Table: Employees SELECT *


ID Name Dept Salary FROM Employees
1 Ali IT 50000 WHERE salary > ALL (
2 Sara HR 70000 SELECT salary
3 Ahmed IT 65000 FROM Employees
4 Ayesha IT 40000 WHERE dept = 'IT'
);

ID Name Dept Salary

2 Sara HR 70000 46
[Link] WITH ALL
 ALL compares a value with all values from a subquery.
Table: Employees SELECT *
FROM Employees
ID Name Dept Salary WHERE salary > ALL (
1 Ali IT 50000 SELECT salary
FROM Employees
2 Sara HR 70000
WHERE dept = 'IT'
3 Ahmed IT 65000 );
4 Ayesha IT 40000
 Subquery result (IT salaries):
ID Name Dept Salary 50000, 65000, 40000
 salary > ALL means:
2 Sara HR 70000
Salary must be greater than every IT
salary
47
So, salary must be > 65000 (highest IT
salary)
14. WHERE WITH ARITHMETIC CONDITION
 ◦ Uses mathematical operations (+, −, *, /) in the WHERE
clause.

Table: Employees SELECT *


ID Name Dept Salary FROM Employees
1 Ali IT 50000 WHERE salary + 5000 >
2 Sara HR 70000 60000;
3 Ahmed IT 65000
4 Ayesha IT 40000

ID Name Dept Salary

2 Sara HR 70000 48

3 Ahmed IT 65000
GROUP BY AND HAVING
1. BASIC GROUP BY (SINGLE COLUMN)
 GROUP BY is used to group rows based on one column.

Table: Employees SELECT Dept


ID Name Dept Salary FROM Employees
1 Ali IT 50000 GROUP BY Dept;
2 Sara HR 70000
3 Ahmed IT 65000
4 Ayesha IT 40000

Dept
50
IT
HR
2. GROUP BY WITH MULTIPLE COLUMNS
 Groups data based on more than one column.

ID Name Dept City Salary


1 Ali IT Islamabad 50000
SELECT Dept, City, COUNT(*)
AS Total_Employees
2 Sara HR Lahore 70000
FROM Employees
3 Ahmed IT Islamabad 65000
GROUP BY Dept, City;
4 Ayesha IT Lahore 40000

Dept City Total_Employees


IT Islamabad 2
51
IT Lahore 1
HR Lahore 1
3. GROUP BY WITH AGGREGATE FUNCTIONS
 GROUP BY is used to group rows based on one column.

Table: Employees SELECT Dept,


ID Name Dept Salary COUNT(*) AS
1 Ali IT 50000 Total_Employees
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000 GROUP BY Dept;
4 Ayesha IT 40000

Dept Total_Employees
IT 3 52

HR 1
3. GROUP BY WITH AGGREGATE FUNCTIONS
 GROUP BY is used to group rows based on one column.

Table: Employees SELECT Dept,


ID Name Dept Salary SUM(Salary) AS
1 Ali IT 50000 Total_Salary
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000 GROUP BY Dept;
4 Ayesha IT 40000

Dept Total_Salary
53
IT 155000
HR 70000
4. GROUP BY WITH WHERE (FILTER BEFORE
GROUPING)
 WHERE filters rows first, then GROUP BY groups the
remaining data.

Table: Employees SELECT Dept, AVG(Salary) AS


ID Name Dept Salary Avg_Salary
1 Ali IT 50000 FROM Employees
2 Sara HR 70000 WHERE Salary > 45000
3 Ahmed IT 65000 GROUP BY Dept;
4 Ayesha IT 40000

Dept Avg_Salary WHERE → filters rows first


IT 57500 GROUP BY → groups 54 the filtered rows

Then aggregate function (AVG) is applied


HR 70000
5. GROUP BY WITH ORDER BY
 GROUP BY groups the data, and ORDER BY sorts the result.

Table: Employees SELECT Dept, AVG(Salary) AS


ID Name Dept Salary Avg_Salary
1 Ali IT 50000 FROM Employees
2 Sara HR 70000 GROUP BY Dept
3 Ahmed IT 65000 ORDER BY Avg_Salary DESC;
4 Ayesha IT 40000

•GROUP BY → groups employees by department


Dept Avg_Salary •AVG(Salary) → calculates average salary of each
department 55
•ORDER BY DESC → sorts from highest to lowest
HR 70000
IT 51666.67
HAVING CLAUSE SCENARIOS
1. BASIC HAVING (FILTER GROUPS)

◦ HAVING is used to filter groups after GROUP BY.

Table: Employees
ID Name Dept Salary SELECT Dept, AVG(Salary)
1 Ali IT 50000 AS Avg_Salary
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000
GROUP BY Dept
HAVING AVG(Salary) >
4 Ayesha IT 40000
60000;

Dept Avg_Salary •WHERE filters rows before grouping


•HAVING filters groups after grouping
HR 70000
56
2. HAVING WITH AGGREGATE FUNCTIONS

HAVING is used to filter groups based on total (SUM).

Table: Employees
ID Name Dept Salary SELECT Dept, SUM(Salary)
1 Ali IT 50000 AS Total_Salary
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000 GROUP BY Dept
4 Ayesha IT 40000 HAVING SUM(Salary) >
100000;

Dept Total_Salary •SUM(Salary) → adds salaries of each department


•GROUP BY → creates department groups
•HAVING → filters groups based on total salary
IT 155000
57
[Link] WITH MULTIPLE CONDITIONS (AND) .

◦ Uses more than one condition to filter groups after GROUP BY.

Table: Employees
SELECT Dept, SUM(Salary)
ID Name Dept Salary
AS Total_Salary, COUNT(*)
1 Ali IT 50000 AS Total_Employees
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000 GROUP BY Dept
4 Ayesha IT 40000 HAVING SUM(Salary) >
100000 AND COUNT(*) > 2;

Total_Salar Total_Empl •HAVING filters groups after grouping


Dept
y oyees •AND means both conditions must be true
IT 155000 3
58
4. HAVING WITHOUT GROUP BY (SINGLE GROUP)

◦ When GROUP BY is not used, the whole table is treated as one single group.

Table: Employees
SELECT SUM(Salary) AS
ID Name Dept Salary
Total_Salary
1 Ali IT 50000 FROM Employees
2 Sara HR 70000 HAVING SUM(Salary) >
3 Ahmed IT 65000 200000;
4 Ayesha IT 40000

•“If GROUP BY is
Total_Salary not used, HAVING
applies the
condition on the
225000
whole table as one
single group.” 59
5. GROUP BY WITH EXPRESSIONS

◦ You can use calculations or expressions inside GROUP BY.

Table: Employees
SELECT Salary/10000 AS
ID Name Dept Salary
Salary_Group, COUNT(*)
1 Ali IT 50000 AS Total_Employees
2 Sara HR 70000 FROM Employees
3 Ahmed IT 65000 GROUP BY Salary/10000;
4 Ayesha IT 40000
•Expression = a
Salary_Group Total_Employees calculation (like
Salary/10000)
4 1
5 1 •GROUP BY can
6.5 1 group data based
7 1 on calculations, not 60
only columns
HOMEWORK : STUDY THIS: KEEP THIS IN MIND :
UNDERTSAND THIS
 FROM → WHERE → GROUP BY → HAVING → SELECT →
ORDER BY
 Execute a query in your free time while following this
sequence

61
HOMEWORK : STUDY THIS AS WELL
 Aggregate functions like:
 SUM()

 AVG()

 COUNT()

 MAX()

 MIN()

 cannot be used in WHERE


Whether you use GROUP BY or not.
WHY

62
THANK YOU

Any Questions
[ all slides after this is – stated similar concepts that we studied
before ]
63

You might also like