Lecture 4 Additional Slides
CSE 344, Winter 2014 Sudeepa Roy
1 CSE 344 - Winter 2014
Lecture 4 Additional Slides CSE 344, Winter 2014 Sudeepa Roy CSE - - PowerPoint PPT Presentation
Lecture 4 Additional Slides CSE 344, Winter 2014 Sudeepa Roy CSE 344 - Winter 2014 1 NOTE: These slides were used as a whiteboard in class, and mostly contain the same material as the lecture slides and sqlite notes. CSE 344 - Winter 2014
1 CSE 344 - Winter 2014
2 CSE 344 - Winter 2014
CSE 344 - Winter 2014 3
CSE 344 - Winter 2014 4
pname price category manufacturer Gizmo 19.99 gadget GizmoWorks PowerGizmo 29.99 gadget GizmoWorks SingleTouch 149.99 photography Canon MultiTouch 199.99 photography Hitachi SuperGizmo 49.99 gadget Hitachi iPad 5 NULL gadget Apple cname country GizmoWorks USA Canon Japan Hitachi Japan Google USA
SELECT gadegts with price < 25 and >=25 iPad5 is nowhere!
5 CSE 344 - Winter 2014
6 CSE 344 - Winter 2014
– E.g. price<25 is FALSE when price=99
– E.g. price<25 is UNKNOWN when price=NULL
– E.g. price<25 is TRUE when price=19
– C1 AND C2 means min(C1,C2) – C1 OR C2 means max(C1,C2) – not C means 1-C
7 CSE 344 - Winter 2014
8 CSE 344 - Winter 2014
9 CSE 344 - Winter 2014
pname price category manufacturer Gizmo 19.99 gadget GizmoWorks PowerGizmo 29.99 gadget GizmoWorks SingleTouch 149.99 photography Canon MultiTouch 199.99 photography Hitachi SuperGizmo 49.99 gadget Hitachi iPad 5 NULL gadget Apple cname country GizmoWorks USA Canon Japan Hitachi Japan Google USA
Product Company
10 CSE 344 - Winter 2014
pname price category manufacturer Gizmo 19.99 gadget GizmoWorks PowerGizmo 29.99 gadget GizmoWorks SingleTouch 149.99 photography Canon MultiTouch 199.99 photography Hitachi SuperGizmo 49.99 gadget Hitachi iPad 5 NULL gadget Apple cname country GizmoWorks USA Canon Japan Hitachi Japan Google USA
Product Company
11 CSE 344 - Winter 2014
pname price category manufacturer Gizmo 19.99 gadget GizmoWorks PowerGizmo 29.99 gadget GizmoWorks SingleTouch 149.99 photography Canon MultiTouch 199.99 photography Hitachi SuperGizmo 49.99 gadget Hitachi iPad 5 NULL gadget Apple cname country GizmoWorks USA Canon Japan Hitachi Japan Google USA
Product Company
12 CSE 344 - Winter 2014
pname price category manufacturer Gizmo 19.99 gadget GizmoWorks PowerGizmo 29.99 gadget GizmoWorks SingleTouch 149.99 photography Canon MultiTouch 199.99 photography Hitachi SuperGizmo 49.99 gadget Hitachi iPad 5 NULL gadget Apple cname country GizmoWorks USA Canon Japan Hitachi Japan Google USA
Product Company
13 CSE 344 - Winter 2014
14 CSE 344 - Winter 2014
CSE 344 - Winter 2014 15
Other DBMSs have other ways of importing data Specify a filename where the database will be stored >sqlite3 lecture04 sqlite> create table Purchase (pid int primary key, product text, price float, quantity int, month varchar(15)); sqlite> -- download data.txt sqlite> .import data.txt Purchase
CSE 344 - Winter 2014 16
update Purchase set price = null where price = ‘null’
CSE 344 - Winter 2014 17
select count(*) from Purchase select sum(quantity) from Purchase select avg(price) from Purchase select max(quantity) from Purchase select min(quantity) from Purchase
18
insert into Purchase values(12, 'gadget', NULL, NULL, 'april') select count(*) from Purchase select count(quantity) from Purchase select sum(quantity) from Purchase select sum(quantity) from Purchase where quantity is not null; Null values are not used in aggregates Let’s try the following
CSE 344 - Winter 2014
COUNT applies to duplicates, unless otherwise stated: SELECT Count(product) FROM Purchase WHERE price > 4.99 same as Count(*) We probably want: SELECT Count(DISTINCT product) FROM Purchase WHERE price> 4.99
CSE 344 - Winter 2014 19
SELECT Sum(price * quantity) FROM Purchase SELECT Sum(price * quantity) FROM Purchase WHERE product = ‘bagel’ What do they mean ?
CSE 344 - Winter 2014 20
SELECT Sum(price * quantity) FROM Purchase WHERE product = ‘Bagel’ 90 (= 60+30)
CSE 344 - Winter 2014 21
Purchase(product, price, quantity) SELECT product, Sum(quantity) AS TotalSales FROM Purchase WHERE price > 1 GROUP BY product Let’s see what this means… Find total quantities for all sales over $1, by product.
CSE 344 - Winter 2014 22
grouped attributes and aggregates.
CSE 344 - Winter 2014 23
CSE 344 - Winter 2014 24
WHERE price > 1 SELECT product, Sum(quantity) AS TotalSales FROM Purchase WHERE price > 1 GROUP BY product
SELECT product, Sum(quantity) AS TotalSales FROM Purchase WHERE price > 1 GROUP BY product
25 CSE 344 - Winter 2014
SELECT product, sum(quantity) AS SumQuantity, max(price) AS MaxPrice FROM Purchase GROUP BY product What does it mean ?
CSE 344 - Winter 2014
SELECT product, count(*) FROM Purchase GROUP BY product SELECT month, count(*) FROM Purchase GROUP BY month Compare these two queries:
26
SELECT product, max(quantity) FROM Purchase GROUP BY product SELECT product, quantity FROM Purchase GROUP BY product sqlite is WRONG on this query. Advanced DBMS (e.g. SQL Server) gives an error (the attribute in SELECT must appear in an aggregate function OR GROUP BY clause)
27 CSE 344 - Winter 2014
28 CSE 344 - Winter 2014
29 CSE 344 - Winter 2014
30 CSE 344 - Winter 2014
31 CSE 344 - Winter 2014
Always remember that first WHERE condition is applied, then GROUP BY is performed, so these tuples with 0 value won’t appear in the results
32 CSE 344 - Winter 2014
CSE 344 - Winter 2014
SELECT product, sum(price*quantity) as rev FROM purchase GROUP BY product ORDER BY rev desc;
33
CSE 344 - Winter 2014 34