02-modernsql
02-modernsql
Systems (15-445/645)
Lecture #02
Modern
SQL
FALL 2023 Prof. Andy Pavlo Prof. Jignesh Patel
2
LAST CLASS
S Q L H I S TO R Y
S Q L H I S TO R Y
S Q L H I S TO R Y
S Q L H I S TO R Y
S Q L H I S TO R Y
S Q L H I S TO R Y
R E L AT I O N A L L A N G UAG E S
Also includes:
→ View definition
→ Integrity & Referential Constraints
→ Transactions
TO DAY ' S AG E N DA
Aggregations + Group By
String / Date / Time Operations
Output Control + Redirection
Window Functions
Nested Queries
Lateral Joins
Common Table Expressions
E X A M P L E DATA B A S E
student(sid,name,login,gpa) enrolled(sid,cid,grade)
sid name login age gpa sid cid grade
53666 RZA rza@cs 44 4.0 53666 15-445 C
53688 Bieber jbieber@cs 27 3.9 53688 15-721 A
53655 Tupac shakur@cs 25 3.5 53688 15-826 B
53655 15-445 B
course(cid,name) 53666 15-721 C
cid name
15-445 Database Systems
15-721 Advanced Database Systems
15-826 Data Mining
15-799 Special Topics in Databases
AG G R E G AT E S
AG G R E G AT E S
AG G R E G AT E S
AG G R E G AT E S
AG G R E G AT E S
AG G R E G AT E S
M U LT I P L E AG G R E G AT E S
AVG(gpa) COUNT(sid)
SELECT AVG(gpa), COUNT(sid) 3.8 3
FROM student WHERE login LIKE '%@cs'
AG G R E G AT E S
AVG(s.gpa) e.cid
SELECT AVG(s.gpa), e.cid 3.86 ???
FROM enrolled AS e JOIN student AS s
ON e.sid = s.sid
AG G R E G AT E S
AVG(s.gpa) e.cid
SELECT AVG(s.gpa), e.cid 3.86 ???
FROM enrolled AS e JOIN student AS s
ON e.sid = s.sid
G RO U P B Y
G RO U P B Y
G RO U P B Y
G RO U P B Y
H AV I N G
H AV I N G
H AV I N G
AVG(s.gpa) e.cid
3.75 15-415 avg_gpa e.cid
3.950000 15-721 3.950000 15-721
3.900000 15-826
15-445/645 (Fall 2023)
29
S T R I N G O P E R AT I O N S
S T R I N G O P E R AT I O N S
S T R I N G O P E R AT I O N S
S T R I N G O P E R AT I O N S
DAT E / T I M E O P E R AT I O N S
OUTPUT REDIRECTION
OUTPUT REDIRECTION
OUTPUT REDIRECTION
O U T P U T C O N T RO L
O U T P U T C O N T RO L
O U T P U T C O N T RO L
O U T P U T C O N T RO L
O U T P U T C O N T RO L
WINDOW FUNCTIONS
WINDOW FUNCTIONS
Aggregation functions:
→ Anything that we discussed earlier sid cid grade row_num
53666 15-445 C 1
Special window functions: 53688 15-721 A 2
→ ROW_NUMBER()→ # of the current row 53688 15-826 B 3
→ RANK()→ Order position of the current 53655 15-445 B 4
row. 53666 15-721 C 5
WINDOW FUNCTIONS
WINDOW FUNCTIONS
SELECT *,
ROW_NUMBER() OVER (ORDER BY cid)
FROM enrolled
ORDER BY cid
WINDOW FUNCTIONS
Find the student with the second highest grade for each
course.
Group tuples by cid
Then sort by grade
SELECT * FROM (
SELECT *, RANK() OVER (PARTITION BY cid
ORDER BY grade ASC) AS rank
FROM enrolled) AS ranking
WHERE ranking.rank = 2
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
NESTED QUERIES
cid name
15-799 Special Topics in Databases
L AT E R A L J O I N S
t1.x t2.y
SELECT * FROM 1 2
(SELECT 1 AS x) AS t1,
LATERAL (SELECT t1.x+1 AS y) AS t2;
L AT E R A L J O I N
L AT E R A L J O I N
L AT E R A L J O I N
L AT E R A L J O I N
L AT E R A L J O I N
L AT E R A L J O I N
C O M M O N TA B L E E X P R E S S I O N S
WITH cteName AS (
SELECT 1
)
SELECT * FROM cteName
C O M M O N TA B L E E X P R E S S I O N S
C O M M O N TA B L E E X P R E S S I O N S
C O M M O N TA B L E E X P R E S S I O N S
C O M M O N TA B L E E X P R E S S I O N S
CONCLUSION
HOMEWORK #1
https://15445.courses.cs.cmu.edu/fall2023/homework1
NEXT CLASS
Storage Management