CMU SCS Carnegie Mellon Univ Dept of Computer

  • Slides: 94
Download presentation
CMU SCS Carnegie Mellon Univ. Dept. of Computer Science 15 -415/615 - DB Applications

CMU SCS Carnegie Mellon Univ. Dept. of Computer Science 15 -415/615 - DB Applications C. Faloutsos & A. Pavlo Lecture#6: Rel. model - SQL part 1 (R&G, chapter 5)

CMU SCS General Overview - rel. model • Formal query languages – rel algebra

CMU SCS General Overview - rel. model • Formal query languages – rel algebra and calculi • Commercial query languages – SQL – QBE, (QUEL) Faloutsos, Pavlo CMU SCS 15 -415/615 2

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos, Pavlo CMU SCS 15 -415/615 3

CMU SCS Relational Query Languages • A major strength of the relational model: supports

CMU SCS Relational Query Languages • A major strength of the relational model: supports simple, powerful querying of data. • Two sublanguages: • DDL – Data Definition Language – define and modify schema (at all 3 levels) • DML – Data Manipulation Language – Queries can be written intuitively. Faloutsos, Pavlo CMU SCS 15 -415/615 4

CMU SCS Relational languages • The DBMS is responsible for efficient evaluation. – Query

CMU SCS Relational languages • The DBMS is responsible for efficient evaluation. – Query optimizer: re-orders operations and generates query plan Faloutsos, Pavlo CMU SCS 15 -415/615 5

CMU SCS The SQL Query Language • The most widely used relational query language.

CMU SCS The SQL Query Language • The most widely used relational query language. – Major standard is SQL-1999 (=SQL 3) • Introduced “Object-Relational” concepts • SQL 2003, SQL 2008 have small extensions – SQL 92 is a basic subset Faloutsos, Pavlo CMU SCS 15 -415/615 6

CMU SCS SQL (cont’d) – Postgre. SQL has some “unique” aspects (as do most

CMU SCS SQL (cont’d) – Postgre. SQL has some “unique” aspects (as do most systems). Faloutsos, Pavlo CMU SCS 15 -415/615 7

CMU SCS DML General form select a 1, a 2, … an from r

CMU SCS DML General form select a 1, a 2, … an from r 1, r 2, … rm where P [order by …. ] [group by …] [having …] Faloutsos, Pavlo CMU SCS 15 -415/615 8

CMU SCS Reminder: our Mini-U db Faloutsos, Pavlo CMU SCS 15 -415/615 9

CMU SCS Reminder: our Mini-U db Faloutsos, Pavlo CMU SCS 15 -415/615 9

CMU SCS DML - eg: find the ssn(s) of everybody called “smith” select ssn

CMU SCS DML - eg: find the ssn(s) of everybody called “smith” select ssn from student where name=“smith” Faloutsos, Pavlo CMU SCS 15 -415/615 10

CMU SCS DML - observation General form select a 1, a 2, … an

CMU SCS DML - observation General form select a 1, a 2, … an from r 1, r 2, … rm where P equivalent rel. algebra query? Faloutsos, Pavlo CMU SCS 15 -415/615 11

CMU SCS DML - observation General form select a 1, a 2, … an

CMU SCS DML - observation General form select a 1, a 2, … an from r 1, r 2, … rm where P Faloutsos, Pavlo CMU SCS 15 -415/615 12

CMU SCS DML - observation General form select distinct a 1, a 2, …

CMU SCS DML - observation General form select distinct a 1, a 2, … an from r 1, r 2, … rm where P Faloutsos, Pavlo CMU SCS 15 -415/615 13

CMU SCS select clause select [distinct | all ] name from student where address=“main”

CMU SCS select clause select [distinct | all ] name from student where address=“main” Faloutsos, Pavlo CMU SCS 15 -415/615 14

CMU SCS where clause find ssn(s) of all “smith”s on “main” select ssn from

CMU SCS where clause find ssn(s) of all “smith”s on “main” select ssn from student where address=“main” and name = “smith” Faloutsos, Pavlo CMU SCS 15 -415/615 15

CMU SCS where clause • boolean operators (and or not …) • comparison operators

CMU SCS where clause • boolean operators (and or not …) • comparison operators (<, >, =, …) • and more… Faloutsos, Pavlo CMU SCS 15 -415/615 16

CMU SCS What about strings? find student ssns who live on “main” (st or

CMU SCS What about strings? find student ssns who live on “main” (st or street - ie. , “main st” or “main str” …) Faloutsos, Pavlo CMU SCS 15 -415/615 17

CMU SCS What about strings? find student ssns who live on “main” (st or

CMU SCS What about strings? find student ssns who live on “main” (st or street) select ssn from student where address like “main%” %: variable-length don’t care _: single-character don’t care Faloutsos, Pavlo CMU SCS 15 -415/615 18

CMU SCS from clause find names of people taking 15 -415 Faloutsos, Pavlo CMU

CMU SCS from clause find names of people taking 15 -415 Faloutsos, Pavlo CMU SCS 15 -415/615 19

CMU SCS from clause find names of people taking 15 -415 select name from

CMU SCS from clause find names of people taking 15 -415 select name from student, takes where ? ? ? Faloutsos, Pavlo CMU SCS 15 -415/615 20

CMU SCS from clause find names of people taking 15 -415 select name from

CMU SCS from clause find names of people taking 15 -415 select name from student, takes where student. ssn = takes. ssn and takes. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 21

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos, Pavlo CMU SCS 15 -415/615 22

CMU SCS renaming - tuple variables find names of people taking 15 -415 select

CMU SCS renaming - tuple variables find names of people taking 15 -415 select name from our. Very. Own. Student, student. Taking. Classes where our. Very. Own. Student. ssn = student. Taking. Classes. ssn and student. Taking. Classes. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 23

CMU SCS 2 reasons to rename: • #1) shorthand • #2) self-joins Faloutsos, Pavlo

CMU SCS 2 reasons to rename: • #1) shorthand • #2) self-joins Faloutsos, Pavlo CMU SCS 15 -415/615 24

CMU SCS #1) renaming - tuple variables find names of people taking 15 -415

CMU SCS #1) renaming - tuple variables find names of people taking 15 -415 select name from our. Very. Own. Student, student. Taking. Classes where our. Very. Own. Student. ssn =student. Taking. Classes. ssn and student. Taking. Classes. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 25

CMU SCS #1) renaming - tuple variables find names of people taking 15 -415

CMU SCS #1) renaming - tuple variables find names of people taking 15 -415 select name from our. Very. Own. Student as S, student. Taking. Classes as T where S. ssn =T. ssn and T. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 26

CMU SCS #2) renaming - self-join • self -joins: find Tom’s grandparent(s) Faloutsos, Pavlo

CMU SCS #2) renaming - self-join • self -joins: find Tom’s grandparent(s) Faloutsos, Pavlo CMU SCS 15 -415/615 27

CMU SCS #2) renaming - self-join find grandparents of “Tom” (PC(p-id, c-id)) select gp.

CMU SCS #2) renaming - self-join find grandparents of “Tom” (PC(p-id, c-id)) select gp. p-id from PC as gp, PC where gp. c-id= PC. p-id and PC. c-id = “Tom” Faloutsos, Pavlo CMU SCS 15 -415/615 28

CMU SCS #2) renaming - theta join find course names with more units than

CMU SCS #2) renaming - theta join find course names with more units than 15415 Faloutsos, Pavlo CMU SCS 15 -415/615 29

CMU SCS #2) renaming - theta join find course names with more units than

CMU SCS #2) renaming - theta join find course names with more units than 15415 select c 1. c-name from class as c 1, class as c 2 where c 1. units > c 2. units and c 2. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 30

CMU SCS find course names with more units than 15 -415 select c 1.

CMU SCS find course names with more units than 15 -415 select c 1. name from class as c 1, class as c 2 where c 1. units > c 2. units and c 2. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 31

CMU SCS find course names with more units than 15 -415 select c 2.

CMU SCS find course names with more units than 15 -415 select c 2. name from class as c 1, class as c 2 where c 2. units > c 1. units and c 1. c-id = “ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 32

CMU SCS Overview - detailed - SQL • DML – select, from, where –

CMU SCS Overview - detailed - SQL • DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos, Pavlo CMU SCS 15 -415/615 33

CMU SCS set operations find ssn of people taking both 15 -415 and 15413

CMU SCS set operations find ssn of people taking both 15 -415 and 15413 Faloutsos, Pavlo CMU SCS 15 -415/615 34

CMU SCS set operations find ssn of people taking both 15 -415 and 15413

CMU SCS set operations find ssn of people taking both 15 -415 and 15413 select ssn from takes where c-id=“ 15 -415” and c-id=“ 15 -413” Faloutsos, Pavlo CMU SCS 15 -415/615 35

CMU SCS set operations find ssn of people taking both 15 -415 and 15413

CMU SCS set operations find ssn of people taking both 15 -415 and 15413 (select ssn from takes where c-id=“ 15 -415” ) intersect (select ssn from takes where c-id=“ 15 -413” ) other ops: union , except Faloutsos, Pavlo CMU SCS 15 -415/615 36

CMU SCS Overview - detailed - SQL • DML – select, from, where –

CMU SCS Overview - detailed - SQL • DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos, Pavlo CMU SCS 15 -415/615 37

CMU SCS Ordering find student records, sorted in name order select * from student

CMU SCS Ordering find student records, sorted in name order select * from student where Faloutsos, Pavlo CMU SCS 15 -415/615 38

CMU SCS Ordering find student records, sorted in name order select * from student

CMU SCS Ordering find student records, sorted in name order select * from student order by name asc is the default Faloutsos, Pavlo CMU SCS 15 -415/615 39

CMU SCS Ordering find student records, sorted in name order; break ties by reverse

CMU SCS Ordering find student records, sorted in name order; break ties by reverse ssn select * from student order by name, ssn desc Faloutsos, Pavlo CMU SCS 15 -415/615 40

CMU SCS Overview - detailed - SQL • DML – select, from, where –

CMU SCS Overview - detailed - SQL • DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos, Pavlo CMU SCS 15 -415/615 41

CMU SCS Aggregate functions find avg grade, across all students select ? ? from

CMU SCS Aggregate functions find avg grade, across all students select ? ? from takes Faloutsos, Pavlo CMU SCS 15 -415/615 42

CMU SCS Aggregate functions find avg grade, across all students select avg(grade) from takes

CMU SCS Aggregate functions find avg grade, across all students select avg(grade) from takes • result: a single number • Which other functions? Faloutsos, Pavlo CMU SCS 15 -415/615 43

CMU SCS Aggregate functions • A: sum count min max (std) Faloutsos, Pavlo CMU

CMU SCS Aggregate functions • A: sum count min max (std) Faloutsos, Pavlo CMU SCS 15 -415/615 44

CMU SCS Aggregate functions find total number of enrollments select count(*) from takes Faloutsos,

CMU SCS Aggregate functions find total number of enrollments select count(*) from takes Faloutsos, Pavlo CMU SCS 15 -415/615 45

CMU SCS Aggregate functions find total number of students in 15 -415 select count(*)

CMU SCS Aggregate functions find total number of students in 15 -415 select count(*) from takes where c-id=“ 15 -415” Faloutsos, Pavlo CMU SCS 15 -415/615 46

CMU SCS Aggregate functions find total number of students in each course select count(*)

CMU SCS Aggregate functions find total number of students in each course select count(*) from takes where ? ? ? Faloutsos, Pavlo CMU SCS 15 -415/615 47

CMU SCS Aggregate functions find total number of students in each course select c-id,

CMU SCS Aggregate functions find total number of students in each course select c-id, count(*) from takes group by c-id Faloutsos, Pavlo CMU SCS 15 -415/615 48

CMU SCS Aggregate functions find total number of students in each course select c-id,

CMU SCS Aggregate functions find total number of students in each course select c-id, count(*) from takes group by c-id order by c-id Faloutsos, Pavlo CMU SCS 15 -415/615 49

CMU SCS Aggregate functions find total number of students in each course, and sort

CMU SCS Aggregate functions find total number of students in each course, and sort by count, decreasing select c-id, count(*) as pop from takes group by c-id order by pop desc Faloutsos, Pavlo CMU SCS 15 -415/615 50

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 Faloutsos, Pavlo

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 Faloutsos, Pavlo CMU SCS 15 -415/615 51

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ?

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ? ? ? , avg(grade) from takes group by ? ? ? Faloutsos, Pavlo CMU SCS 15 -415/615 52

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ssn,

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ssn, avg(grade) from takes group by ssn ? ? ? Faloutsos, Pavlo CMU SCS 15 -415/615 53

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ssn,

CMU SCS Aggregate functions- ‘having’ find students with GPA > 3. 0 select ssn, avg(grade) from takes group by ssn having avg(grade)>3. 0 ‘having’ <-> ‘where’ for groups Faloutsos, Pavlo CMU SCS 15 -415/615 54

CMU SCS Aggregate functions- ‘having’ find students and GPA, for students with > 5

CMU SCS Aggregate functions- ‘having’ find students and GPA, for students with > 5 courses select ssn, avg(grade) from takes group by ssn having count(*) > 5 Faloutsos, Pavlo CMU SCS 15 -415/615 55

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming

CMU SCS Overview - detailed - SQL • DML – select, from, where, renaming – set operations – ordering – aggregate functions – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos CMU SCS 15 -415/615 56

CMU SCS DML General form select a 1, a 2, … an from r

CMU SCS DML General form select a 1, a 2, … an from r 1, r 2, … rm where P [order by …. ] [group by …] [having …] Faloutsos CMU SCS 15 -415/615 57

CMU SCS Reminder: our Mini-U db Faloutsos CMU SCS 15 -415/615 58

CMU SCS Reminder: our Mini-U db Faloutsos CMU SCS 15 -415/615 58

CMU SCS DML - nested subqueries find names of students of 15 -415 select

CMU SCS DML - nested subqueries find names of students of 15 -415 select name from student where. . . “ssn in the set of people that take 15 -415” Faloutsos CMU SCS 15 -415/615 59

CMU SCS DML - nested subqueries find names of students of 15 -415 select

CMU SCS DML - nested subqueries find names of students of 15 -415 select name from student where ………. . . select ssn from takes where c-id =“ 15 -415” Faloutsos CMU SCS 15 -415/615 60

CMU SCS DML - nested subqueries find names of students of 15 -415 select

CMU SCS DML - nested subqueries find names of students of 15 -415 select name from student where ssn in ( select ssn from takes where c-id =“ 15 -415”) Faloutsos CMU SCS 15 -415/615 61

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set of values • ‘in’ can be combined other boolean ops • it is redundant (but user friendly!): select name from student …. . where c-id = “ 15 -415” …. Faloutsos CMU SCS 15 -415/615 62

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set of values • ‘in’ can be combined other boolean ops • it is redundant (but user friendly!): select name from student, takes where c-id = “ 15 -415” and student. ssn=takes. ssn Faloutsos CMU SCS 15 -415/615 63

CMU SCS DML - nested subqueries find names of students taking 15 -415 and

CMU SCS DML - nested subqueries find names of students taking 15 -415 and living on “main str” select name from student where address=“main str” and ssn in ( select ssn from takes where c-id =“ 15 -415”) Faloutsos CMU SCS 15 -415/615 64

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set

CMU SCS DML - nested subqueries • ‘in’ compares a value with a set of values • other operators like ‘in’ ? ? Faloutsos CMU SCS 15 -415/615 65

CMU SCS DML - nested subqueries find student record with highest ssn select *

CMU SCS DML - nested subqueries find student record with highest ssn select * from student where ssn is greater than every other ssn Faloutsos CMU SCS 15 -415/615 66

CMU SCS DML - nested subqueries find student record with highest ssn select *

CMU SCS DML - nested subqueries find student record with highest ssn select * from student where ssn greater than every select ssn from student Faloutsos CMU SCS 15 -415/615 67

CMU SCS DML - nested subqueries find student record with highest ssn select *

CMU SCS DML - nested subqueries find student record with highest ssn select * t c e from student r r o c t s o where ssn > all ( m l a select ssn from student) Faloutsos CMU SCS 15 -415/615 68

CMU SCS DML - nested subqueries find student record with highest ssn select *

CMU SCS DML - nested subqueries find student record with highest ssn select * from student where ssn >= all ( select ssn from student) Faloutsos CMU SCS 15 -415/615 69

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn -

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn - without nested subqueries? select S 1. ssn, S 1. name, S 1. address from student as S 1, student as S 2 where S 1. ssn > S 2. ssn is not the answer (what does it give? ) Faloutsos CMU SCS 15 -415/615 70

CMU SCS Puzzle DML - nested subqueries S 1 S 2 S 1 x

CMU SCS Puzzle DML - nested subqueries S 1 S 2 S 1 x S 2 S 1. ssn>S 2. ssn Faloutsos CMU SCS 15 -415/615 71

CMU SCS Puzzle DML - nested subqueries select S 1. ssn, S 1. name,

CMU SCS Puzzle DML - nested subqueries select S 1. ssn, S 1. name, S 1. address from student as S 1, student as S 2 where S 1. ssn > S 2. ssn gives all but the smallest ssn aha! Faloutsos CMU SCS 15 -415/615 72

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn -

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn - without nested subqueries? select S 1. ssn, S 1. name, S 1. address from student as S 1, student as S 2 where S 1. ssn < S 2. ssn gives all but the highest - therefore…. Faloutsos CMU SCS 15 -415/615 73

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn -

CMU SCS Puzzle DML - nested subqueries find student record with highest ssn - without nested subqueries? (select * from student) except (select S 1. ssn, S 1. name, S 1. address from student as S 1, student as S 2 where S 1. ssn < S 2. ssn) Faloutsos CMU SCS 15 -415/615 74

CMU SCS Puzzle DML - nested subqueries (select * from student) except (select S

CMU SCS Puzzle DML - nested subqueries (select * from student) except (select S 1. ssn, S 1. name, S 1. address from student as S 1, student as S 2 where S 1. ssn < S 2. ssn) select * from student where ssn >= all (select ssn from student) Faloutsos CMU SCS 15 -415/615 75

CMU SCS DML - nested subqueries Drill: Even more readable than select * from

CMU SCS DML - nested subqueries Drill: Even more readable than select * from student where ssn >= all (select ssn from student) Faloutsos CMU SCS 15 -415/615 76

CMU SCS DML - nested subqueries Drill: Even more readable than select * from

CMU SCS DML - nested subqueries Drill: Even more readable than select * from student where ssn >= all (select ssn from student) select * from student where ssn in (select max(ssn) from student) Faloutsos CMU SCS 15 -415/615 77

CMU SCS DML - nested subqueries Drill: find the ssn of the student with

CMU SCS DML - nested subqueries Drill: find the ssn of the student with the highest GPA Faloutsos CMU SCS 15 -415/615 78

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the student with the highest GPA select ssn, avg(grade) from takes where Faloutsos CMU SCS 15 -415/615 79

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the student with the highest GPA select ssn, avg(grade) from takes group by ssn having avg( grade) …. . . greater than every other GPA on file Faloutsos CMU SCS 15 -415/615 80

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the

CMU SCS DML - nested subqueries Drill: find the ssn and GPA of the student with the highest GPA select ssn, avg(grade) from takes group by ssn having avg( grade) >= all ( select avg( grade ) from student group by ssn ) Faloutsos CMU SCS 15 -415/615 } all GPAs 81

CMU SCS DML - nested subqueries • ‘in’ and ‘>= all’ compares a value

CMU SCS DML - nested subqueries • ‘in’ and ‘>= all’ compares a value with a set of values • other operators like these? Faloutsos CMU SCS 15 -415/615 82

CMU SCS DML - nested subqueries • • • <all(), <>all(). . . ‘<>all’

CMU SCS DML - nested subqueries • • • <all(), <>all(). . . ‘<>all’ is identical to ‘not in’ >some(), >= some (). . . ‘= some()’ is identical to ‘in’ exists Faloutsos CMU SCS 15 -415/615 83

CMU SCS DML - nested subqueries Drill for ‘exists’: find all courses that nobody

CMU SCS DML - nested subqueries Drill for ‘exists’: find all courses that nobody enrolled in select c-id from class …. with no tuples in ‘takes’ Faloutsos CMU SCS 15 -415/615 84

CMU SCS DML - nested subqueries Drill for ‘exists’: find all courses that nobody

CMU SCS DML - nested subqueries Drill for ‘exists’: find all courses that nobody enrolled in select c-id from class where not exists (select * from takes where class. c-id = takes. c-id) Faloutsos CMU SCS 15 -415/615 85

CMU SCS DML - derived relations find the ssn with the highest GPA select

CMU SCS DML - derived relations find the ssn with the highest GPA select ssn, avg(grade) from takes group by ssn having avg( grade) >= all ( select avg( grade ) from takes group by ssn ) Faloutsos CMU SCS 15 -415/615 86

CMU SCS DML - derived relations find the ssn with the highest GPA Query

CMU SCS DML - derived relations find the ssn with the highest GPA Query would be easier, if we had a table like: helpful. Table (ssn, gpa): then what? Faloutsos CMU SCS 15 -415/615 87

CMU SCS DML - derived relations select ssn, gpa from helpful. Table where gpa

CMU SCS DML - derived relations select ssn, gpa from helpful. Table where gpa in (select max(gpa) from helpful. Table) Faloutsos CMU SCS 15 -415/615 88

CMU SCS DML - derived relations find the ssn with the highest GPA Query

CMU SCS DML - derived relations find the ssn with the highest GPA Query for helpful. Table (ssn, gpa)? Faloutsos CMU SCS 15 -415/615 89

CMU SCS DML - derived relations find the ssn with the highest GPA Query

CMU SCS DML - derived relations find the ssn with the highest GPA Query for helpful. Table (ssn, gpa)? select ssn, avg(grade) from takes group by ssn Faloutsos CMU SCS 15 -415/615 90

CMU SCS DML - derived relations find the ssn with the highest GPA helpful.

CMU SCS DML - derived relations find the ssn with the highest GPA helpful. Table(ssn, gpa) select ssn, gpa from helpful. Table where gpa = (select max(gpa) from helpful. Table) Faloutsos CMU SCS 15 -415/615 select ssn, avg(grade) from takes group by ssn 91

CMU SCS DML - derived relations find the ssn with the highest GPA select

CMU SCS DML - derived relations find the ssn with the highest GPA select ssn, gpa from (select ssn, avg(grade) from takes group by ssn) as helpful. Table(ssn, gpa) where gpa in (select max(gpa) from helpful. Table) Faloutsos CMU SCS 15 -415/615 92

CMU SCS Overview - detailed - SQL • DML ✔ – select, from, where,

CMU SCS Overview - detailed - SQL • DML ✔ – select, from, where, renaming ✔ – set operations ✔ – ordering ✔ – aggregate functions ✔ – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos CMU SCS 15 -415/615 93

CMU SCS Next lecture: • DML ✔ – select, from, where, renaming ✔ –

CMU SCS Next lecture: • DML ✔ – select, from, where, renaming ✔ – set operations ✔ – ordering ✔ – aggregate functions ✔ – nested subqueries • other parts: DDL, embedded SQL, auth etc Faloutsos CMU SCS 15 -415/615 94