chapter ten multiple row functions/join:

46
1 Chapter Ten Multiple Row Functions/Join: Objectives: -Multiple row functions -Ordering -Grouping -Concept of JOIN

Upload: inigo

Post on 06-Jan-2016

36 views

Category:

Documents


2 download

DESCRIPTION

Chapter Ten Multiple Row Functions/Join:. Objectives: -Multiple row functions -Ordering -Grouping -Concept of JOIN. Aggregate Functions:. MAX (DISTINCT | ALL) (value) MIN (DISTINCT | ALL) (value) AVG(DISTINCT | ALL) (value) SUM (DISTINCT | ALL) (value) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter Ten Multiple Row Functions/Join:

1

Chapter TenMultiple Row Functions/Join:Objectives:

-Multiple row functions

-Ordering-Grouping-Concept of JOIN

Page 2: Chapter Ten Multiple Row Functions/Join:

2

Aggregate Functions:

• MAX (DISTINCT | ALL) (value)

• MIN   (DISTINCT | ALL) (value)

• AVG (DISTINCT | ALL) (value)

• SUM (DISTINCT | ALL) (value)

• COUNT (DISTINCT | ALL) (value)*

• STDDEV (DISTINCT | ALL) (value)

• VARIANCE (DISTINCT | ALL) (value)

Page 3: Chapter Ten Multiple Row Functions/Join:

3

Aggregate Functions:

• COUNT (*)

• COUNT (id)

• COUNT (DISTINCT ID)

• MAX (Birth_date)

Page 4: Chapter Ten Multiple Row Functions/Join:

4

SUM (exp)

• SUM (exp) [ OVER (analytic_clause) ]

SELECT ID, name, salary,SUM (Salary)

OVER (ORDER BY salary) “Cumulating sum”

FROM Faculty;• NAME SALARY DEPT Cumulating sum

• -------------------------------------------------------------

• Hook 25000 MATH 25000

• Johnson 30000 MATH 55000

• Williams 34000 COSC 89000

• Jackson 45000 COSC 134000

Page 5: Chapter Ten Multiple Row Functions/Join:

5

SUM (exp)

SELECT ID, name, salary, SUM (Salary) OVER (PARTITION BY Dept ORDER BY salary) “Cumulating sum”

FROM Faculty;• NAME SALARY DEPT Cumulating sum

• ------------------------------------------------------------------

• William 34000 COSC 34000

• Jackson 45000 COSC 79000

• Hook 25000 MATH 25000

• Johnson 30000 MATH 55000

Page 6: Chapter Ten Multiple Row Functions/Join:

6

Aggregate Functions:

• List the highest GPA

SELECT MAX (GPA)

FROM Student;

Page 7: Chapter Ten Multiple Row Functions/Join:

7

Aggregate Functions:

• List average, max, min, and total salary of cosc faculty

SELECT AVG(salary), MIN(salary),

MAX(salary), SUM(salary)

FROM faculty

WHERE dept = ‘COSC’;

Page 8: Chapter Ten Multiple Row Functions/Join:

8

Aggregate Functions:

• List average salary of cosc faculty:

SELECT AVG(NVL(salary,0)),

AVG (salary), COUNT(*)

FROM faculty

WHERE dept = ‘COSC’;

Page 9: Chapter Ten Multiple Row Functions/Join:

9

Aggregate Functions:

• LEAD: Access to more than one row• List faculty with the hired date and the

next hired date after each one• SELECT name, hired_date,

LEAD(hired_date,1) OVER(ORDER BY

hired_date) AS “next hired”

FROM faculty;

Page 10: Chapter Ten Multiple Row Functions/Join:

10

• RANK (exp, exp, …) WITHIN GROUP• RANK ( ) OVER ( [partition] ORDER BY)

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 FacultyWHERE Dept = ‘COSC’;

Rank:

Page 11: Chapter Ten Multiple Row Functions/Join:

11

Distinct:

SELECT DISTINCT (dept)FROM Faculty;

Page 12: Chapter Ten Multiple Row Functions/Join:

12

User:

SELECT USER, UIDFROM DUAL;

Page 13: Chapter Ten Multiple Row Functions/Join:

13

USERENV:• USERENV (‘Parameter’)

parameters:ENTRYID -- current audit entry numberISDBA -- True if s/he in DBA privilegeLANG -- Language used SESSIONID --Session IDTERMINAL --Operating System ID --for the Terminal of current

session

SELECT USERENV(‘LANG’) ‘Language’FROM DUAL;

LANGUAGE----------------------------AMERICAN_AMERICA.WE8ISO8859P1

Page 14: Chapter Ten Multiple Row Functions/Join:

14

Ordering

• ORDERING: (Default is Ascending ASC)

• List students name in an alphabetic order 

SELECT nameFROM studentORDER BY name;

ORDER BY Name , GPA DESC, Major;

Page 15: Chapter Ten Multiple Row Functions/Join:

15

Ordering

• List of the faculty salary for the next year with 5% increase order by new salary.

 SELECT name,

salary pay, salary+salary*0.05 AS new_salary

FROM facultyORDER BY new_salary;

Page 16: Chapter Ten Multiple Row Functions/Join:

16

Grouping

SELECT

FROM

[WHERE]

[GROUP BY]

[ORDER BY]

Page 17: Chapter Ten Multiple Row Functions/Join:

17

Grouping

• Average Salary of faculty members by department

SELECT dept, AVG(Salary)

FROM Faculty

GROUP BY dept;

Page 18: Chapter Ten Multiple Row Functions/Join:

18

Grouping

• List number of courses taken by each student

SELECT ID, COUNT(*)

FROM Student_Course

GROUP BY ID;

Page 19: Chapter Ten Multiple Row Functions/Join:

19

Grouping by multiple attributes

• List total number of credits taken by each student

SELECT ID, SUM(Cr)

FROM Student_CourseGROUP BY ID;

SELECT ID, semester, SUM(Cr)FROM Student_CourseGROUP BY ID, semester;

SELECT dept, count(name)FROM facultyGROUP BY dept;

Page 20: Chapter Ten Multiple Row Functions/Join:

20

Having

• Condition on Group:

SELECT

FROM

[WHERE]

[GROUP BY]

[HAVING]

[ORDER BY]

Page 21: Chapter Ten Multiple Row Functions/Join:

21

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 ;

Page 22: Chapter Ten Multiple Row Functions/Join:

22

Having

• SELECT dept, MAX(salary)

FROM faculty

GROUP BY Department

HAVING MAX(salary)>50000;

Page 23: Chapter Ten Multiple Row Functions/Join:

23

Having

• SELECT dept, MAX(salary) a

FROM faculty

GROUP BY Dept

HAVING a >50000

ORDER BY MAX(salary);

Page 24: Chapter Ten Multiple Row Functions/Join:

24

Having

• SELECT dept, MAX(SUM(salary))

FROM faculty

GROUP BY dept;

Page 25: Chapter Ten Multiple Row Functions/Join:

25

Illegal Queries:

• SELECT name, count(*) FROM Department;

SELECT name, count(*) FROM Department GROUP BY name;

Page 26: Chapter Ten Multiple Row Functions/Join:

26

Illegal Queries:

SELECT name, AVG(salary) FROM Department WHERE AVG(salary) >5000;

SELECT name, AVG(salary) FROM Department GROUP BY name HAVING AVG(salary) >5000;

Page 27: Chapter Ten Multiple Row Functions/Join:

27

JOIN:

• Definition

• General Format:

• SELECT col1,col2,….

FROM table1, table2,…

WHERE conditions;

 

Page 28: Chapter Ten Multiple Row Functions/Join:

28

JOIN:

• List of students’ name with the grade = 'A' • SELECT Name

FROM Student_Course, StudentWHERE Student.ID =

Student_Course.ID AND Grade

=‘A’;

Page 29: Chapter Ten Multiple Row Functions/Join:

29

JOIN:

• Aliases:

  SELECT Name

FROM Student_Course sc,

Student s

WHERE s.ID = sc.ID AND Grade =‘A’;

Page 30: Chapter Ten Multiple Row Functions/Join:

30

CARTESIAN PRODUCT:

– Join condition is omitted– Join condition is invalid– All rows in table one are joined to all rows in

table two

SELECT *

FROM Student, faculty;

Page 31: Chapter Ten Multiple Row Functions/Join:

31

JOIN

• Equijoin/Natural:

SELECT NameFROM Student_Course, StudentWHERE Student.ID = Student_Course.ID ;

SELECT NameFROM Student_Course

NATURAL JOIN Student ;

Page 32: Chapter Ten Multiple Row Functions/Join:

32

JOIN

• Equijoin/Natural:

SELECT Name

FROM Student_Course

INNER JOIN Student ;

Page 33: Chapter Ten Multiple Row Functions/Join:

33

JOIN

• Inner Join:

SELECT a.Name

FROM Student_Course b

INNER JOIN Student a

ON a.ID = b.ID ;

Page 34: Chapter Ten Multiple Row Functions/Join:

34

JOIN

• Equijoin:

SELECT department.num_faculty,faculty.nameFROM department, facultyWHERE department.name=faculty.dept;

Page 35: Chapter Ten Multiple Row Functions/Join:

35

JOIN

•  Non-Equijoin:

Faculty (name, salary)Status (rank, low_salry, high_salary)

• Get the name, salary and rank of faculty members

• SELECT name, salary, rankFROM faculty, statusWHERE salary BETWEEN low_salary AND high_salary;

Page 36: Chapter Ten Multiple Row Functions/Join:

36

JOIN

• Outer Join:

List of books that have been checked out:

SELECT DISTINCT title

FROM CheckedBook ;

Page 37: Chapter Ten Multiple Row Functions/Join:

37

JOIN

• Outer Join:

List of books that have not been checked out:

SELECT DISTINCT title

FROM ShelfBook ;

Page 38: Chapter Ten Multiple Row Functions/Join:

38

JOIN

• Outer Join:

List of all books:??SELECT DISTINCT title FROM ShelfBook a,

CheckedBook bWHERE a.ID=b.ID ;

Page 39: Chapter Ten Multiple Row Functions/Join:

39

JOIN

• Outer Join:

List of all books:

SELECT title, MAX(b.R_date-b.C_date)

FROM ShelfBook a,

CheckedBook b

WHERE a.ID (+) = b.ID ;

Page 40: Chapter Ten Multiple Row Functions/Join:

40

JOIN

• ANSI SQL Outer Join:

List of all books:

SELECT DISTINCT title

FROM

ShelfBook b RIGHT OUTER JOIN CheckedBook a ON

a.ID = b.ID ;

Page 41: Chapter Ten Multiple Row Functions/Join:

41

JOIN

• ANSI SQL Outer Join:

List of all books:

SELECT DISTINCT title

FROM

CheckedBook a LEFT OUTER JOIN ShelfBook b ON

a.ID = b.ID ;

Page 42: Chapter Ten Multiple Row Functions/Join:

42

JOIN

• ANSI SQL Outer Join:

List of all books:

SELECT DISTINCT title

FROM

CheckedBook a FULL OUTER JOIN ShelfBook b ON

a.ID = b.ID ;

Page 43: Chapter Ten Multiple Row Functions/Join:

43

JOIN

• Outer Join:

• SELECT department.num_faculty, faculty.name

FROM department, faculty

WHEREdepartment.name(+)=faculty.dept

Page 44: Chapter Ten Multiple Row Functions/Join:

44

JOIN

• Outer Join:

• SELECT department.num_faculty, faculty.name

FROM

department LEFT OUTER JOIN faculty ON department.name=faculty.dept;

Page 45: Chapter Ten Multiple Row Functions/Join:

45

JOIN

• Self Join

SELECT a.Name

FROM Student a, Student b

WHERE a.ID > b.ID AND

b.Name = 'SMITH';

What is the output of this query

Page 46: Chapter Ten Multiple Row Functions/Join:

46

JOIN

• Self Join• List of Faculty member with salary higher than

salary of Mary and less than salary of John  SELECT a.Name

FROM Faculty a, Faculty b, Faculty cWHERE a.Salary > b.Salary AND

a.Salary < c.Salary ANDb.Name = 'MARY' ANDc.Name = 'JOHN’;