Multiple Row Functions/Join:
1
Objectives:
-Multiple row functions
-Ordering
-Grouping
-Concept of JOIN
Aggregate Functions:
2
Aggregate Functions:
3
SUM (exp)
SELECT ID, name, salary,SUM (Salary)
OVER (ORDER BY salary) “Cumulating sum”
FROM Faculty;
4
SUM (exp)
SELECT ID, name, salary, SUM (Salary) OVER (PARTITION BY Dept ORDER BY salary) “Cumulating sum”
FROM Faculty;
5
Aggregate Functions:
SELECT MAX (GPA)
FROM Student;
6
Aggregate Functions:
SELECT AVG(salary), MIN(salary),
MAX(salary), SUM(salary)
FROM faculty
WHERE dept = ‘COSC’;
7
Aggregate Functions:
SELECT AVG(NVL(salary,0)),
AVG (salary), COUNT(*)
FROM faculty
WHERE dept = ‘COSC’;
8
Aggregate Functions:
LEAD(hired_date,1)
OVER(ORDER BY hired_date) AS “next hired”
FROM faculty;
9
Rank:
SELECT RANK(24000) WITHIN GROUP
(ORDER BY Salary DESC) “Rank of $24,000 Salary”
FROM Faculty;
SELECT RANK(24000, ‘PROFESSOR’) WITHIN GROUP
(ORDER BY Salary, P_Rank) “Rank”
FROM Faculty;
SELECT Name, Salary, RANK() OVER (PARTITION BY Dept_Name
ORDER BY Salary, P_Rank) “Rank”
FROM Faculty
WHERE Dept = ‘COSC’;
10
Distinct:
11
SELECT DISTINCT (dept)
FROM Faculty;
User:
SELECT USER, UID
FROM DUAL;
12
USERENV:
parameters:
ENTRYID -- current audit entry number
ISDBA -- True if s/he in DBA privilege
LANG -- Language used
SESSIONID --Session ID
TERMINAL --Operating System ID --for the Terminal of current session
SELECT USERENV(‘LANG’) ‘Language’
FROM DUAL;
LANGUAGE
----------------------------
AMERICAN_AMERICA.WE8ISO8859P1
13
Ordering
SELECT name
FROM student
ORDER BY name;
ORDER BY Name , GPA DESC, Major;
14
Ordering
SELECT name,
salary pay,
salary+salary*0.05 AS new_salary
FROM faculty
ORDER BY new_salary;
15
Grouping
SELECT
FROM
[WHERE]
[GROUP BY]
[ORDER BY]
16
Grouping
SELECT dept, AVG(Salary)
FROM Faculty
GROUP BY dept;
17
Grouping
SELECT ID, COUNT(*)
FROM Student_Course
GROUP BY ID;
18
Grouping by multiple attributes
SELECT ID, SUM(Cr)
FROM Student_Course
GROUP BY ID;
SELECT ID, semester, SUM(Cr)
FROM Student_Course
GROUP BY ID, semester;
SELECT dept, count(name)
FROM faculty
GROUP BY dept;
19
Having
SELECT
FROM
[WHERE]
[GROUP BY]
[HAVING]
[ORDER BY]
20
Having
List ID of students who have more than 20 credits and majoring in COSC.
SELECT ID, SUM (Cr)
FROM Student_Course
WHERE Major = 'COSC'
GROUP BY ID
HAVING SUM(Cr) > 20 ;
21
Having
FROM faculty
GROUP BY Department
HAVING MAX(salary)>50000;
22
Having
FROM faculty
GROUP BY Dept
HAVING a >50000
ORDER BY MAX(salary);
23
Having
FROM faculty
GROUP BY dept;
24
Illegal Queries:
25
FROM Department
GROUP BY name;
Illegal Queries:
26
FROM Department
WHERE AVG(salary) >5000;
SELECT name, AVG(salary)
FROM Department
GROUP BY name
HAVING AVG(salary) >5000;
JOIN:
FROM table1, table2,…
WHERE conditions;
27
JOIN:
FROM Student_Course, Student
WHERE Student.ID =
Student_Course.ID AND Grade =‘A’;
28
JOIN:
SELECT Name
FROM Student_Course sc,
Student s
WHERE s.ID = sc.ID AND Grade =‘A’;
29
CARTESIAN PRODUCT:
SELECT *
FROM Student, faculty;
30
JOIN
SELECT Name
FROM Student_Course, Student
WHERE Student.ID = Student_Course.ID ;
SELECT Name
FROM Student_Course
NATURAL JOIN Student ;
31
JOIN
SELECT Name
FROM Student_Course
INNER JOIN Student ;
32
JOIN
SELECT a.Name
FROM Student_Course b
INNER JOIN Student a
ON a.ID = b.ID ;
33
JOIN
SELECT department.num_faculty, faculty.name
FROM department, faculty
WHERE department.name=faculty.dept;
34
JOIN
Faculty (name, salary)
Status (rank, low_salry, high_salary)
FROM faculty, status
WHERE salary
BETWEEN low_salary AND high_salary;
35
JOIN
List of books that have been checked out:
SELECT DISTINCT title
FROM CheckedBook ;
36
JOIN
List of books that have not been checked out:
SELECT DISTINCT title
FROM ShelfBook ;
37
JOIN
List of all books:??
SELECT DISTINCT title
FROM ShelfBook a,
CheckedBook b
WHERE a.ID=b.ID ;
38
JOIN
List of all books:
SELECT title, MAX(b.R_date-b.C_date)
FROM ShelfBook a,
CheckedBook b
WHERE a.ID (+) = b.ID ;
39
JOIN
List of all books:
SELECT DISTINCT title
FROM
ShelfBook b RIGHT OUTER JOIN CheckedBook a ON
a.ID = b.ID ;
40
JOIN
List of all books:
SELECT DISTINCT title
FROM
CheckedBook a LEFT OUTER JOIN ShelfBook b ON
a.ID = b.ID ;
41
JOIN
List of all books:
SELECT DISTINCT title
FROM
CheckedBook a FULL OUTER JOIN ShelfBook b ON
a.ID = b.ID ;
42
JOIN
FROM department, faculty
WHERE department.name(+)=faculty.dept
43
JOIN
FROM
department LEFT OUTER JOIN faculty ON department.name=faculty.dept;
44
JOIN
SELECT a.Name
FROM Student a, Student b
WHERE a.ID > b.ID AND
b.Name = 'SMITH';
45
JOIN
SELECT a.Name
FROM Faculty a, Faculty b, Faculty c
WHERE a.Salary > b.Salary AND
a.Salary < c.Salary AND
b.Name = 'MARY' AND
c.Name = 'JOHN’;
46