Download presentation
Presentation is loading. Please wait.
1
CS 3630 Database Design and Implementation
2
Due Wednesday, April 4, by 5 PM Class dropbox on K: drive
Project Phase II Due Wednesday, April 4, by 5 PM Class dropbox on K: drive
3
Assignment 8 Due Friday, April 6, by 5 PM
4
Aggregate Functions: Produce a single value from a set
Count Max Min Sum Avg …
5
SQL Aggregate Functions
-- Max, Min, Avg, Sum Select Max(price), Min(price), Avg(price) From room;
6
Formatting -- Formatting
Col MaxPrice format $99.00 heading "Max Price" Select Max(price) MaxPrice, Min(price) MinPrice, Avg(price) AvgPrice From room;
7
Formatting -- Formatting
Col MaxPrice format $ heading "Max Price" Col MinPrice format $ heading "Min Price" Col AvgPrice format $ heading "Avg Price" Select Max(price) MaxPrice, Min(price) MinPrice, Avg(price) AvgPrice From room;
8
SQL Aggregate Functions
-- Room_No char(4) Select Max(room_no), Min(room_no) From room;
9
SQL Aggregate Functions
// Room_No char(4) // No average or sum on strings! Select Avg(room_no), Sum(room_no) From room;
10
Max/Min Dates Col Min(Date_From) Format a20 Heading 'Earlist Date_From' Col Max(Date_To) Format a20 Heading 'Latest Date_To' Select Min(Date_From), Max(Date_To) From Booking;
11
Max/Min Dates col "Earliest Date from" format a20
col "Latest Date To" format a20 Select To_Char(Min(Date_From), 'Mon dd yyyy') "Earliest Date from", To_Char(Max(Date_To), 'Mon dd yyyy') "Latest Date To" From Booking;
12
Incorrect! col "Earliest Date from" format a20
col "Latest Date To" format a20 Select Min(To_Char(Date_From, 'Mon dd yyyy')) "Earliest Date from", Max(To_Char(Date_To, 'Mon dd yyyy')) "Latest Date To" From Booking;
13
Count -- Count(*): number of all records
-- count(hotel_no): number of Hotel_No -- Count(unique Hotel_No): number of distinct Hotel_No Select count(*), count(hotel_no), count(unique hotel_no) From room; Pause Select * From room Order by hotel_no;
14
Count -- Does not count null values select count(*), count(address)
From guest; Select * From guest;
15
Aggregate Functions with Distinct/Unique
Select Avg(Price) From room; -- With Distinct Select Avg(Distinct Price) Select Avg(Unique Price) Select * From room Order by price;
16
Aggregate Functions with Where
-- With where clause -- Avg is applied after Where clause col "Average Price" format $999.00 Select Avg(Price) "Average Price" From room Where rtype = 'Family'; Select Avg(Price) "Average Price" Where rtype = 'Single'; Where rtype = 'Double';
17
Aggregate Functions with Where
-- With where clause -- Avg is applied after Where clause Select 'Average Price of Family rooms: ', Avg(Price) From room Where rtype = 'Family'; Pause Prompt Run time error! Select rtype, Avg(Price)
18
One record for each group.
Group By Clause Count, Avg Select Group By Count, Avg Count, Avg One record for each group.
19
Group By Select Avg(Price) From room Group by rtype;
Select rtype, Avg(Price)
20
Group By Clause For each hotel, display Hotel_No with the number of rooms. Select Hotel_No, Count(*) From Room Group By Hotel_No; Hotel_No Room_No Price H01 R001 30 R002 35 H05 R003 40 R103 45 R101 50 Hotel_No Room_No Price H01 R001 30 R002 35 R103 45 H05 R003 40 R101 50 Hotel_No Count H01 3 H05 2
21
What can be selected with Group By Clause
Can select Hotel_No, the group by field Can select aggregate functions on any other fields such as Max(Room_No) or Avg(Price) Hotel_No Room_No Price H01 R001 30 R002 35 R103 45 H05 R003 40 R101 50 Hotel_No Room_No Price H01 R001 30 R002 35 R103 45 H05 R003 40 R101 50 Hotel_No Max(Room_No) Avg(Price) H01 R103 36.67 H05 R101 45
22
What CANNOT be selected with Group By Clause
Cannot select other fields (without aggregate function) not in the group by clause ORA-00979: not a GROUP BY expression Hotel_No Room_No Price H01 R001 30 R002 35 R103 45 H05 R003 40 R101 50 Hotel_No Room_No Price H01 R001 30 R002 35 R103 45 H05 R003 40 R101 50 Hotel_No Room_No Price H01 ? H05
23
Group By Clause ? Select Group By ? ? One record for each group!
What can be selected? Aggregate functions Group by fields
24
One Record for Each Group
Select Hotel_no, Count(*), Max(Price) From Room Group by Hotel_No; Select Hotel_no, Room_No, rtype, Price -- not a Group By expression
25
Group by More Than One Field
Select Hotel_No, rtype, Max(Price) From Room Group By Hotel_no, rtype Order By Hotel_no, rtype
26
Order After Group by Select Hotel_no, Count(*), Max(Price) From Room
Group by Hotel_No Order by Count(*);
27
Group By Clause ? Select Group By ? ?
What if we don’t want all groups? Having on groups
28
Having to select groups
Select Hotel_no, Count(*), Max(Price) From Room Group by Hotel_No; Pause Group by Hotel_No Having Count(*) >= 5;
29
Group By Where before Group by to select records
Having after Group by to select groups Select Hotel_no, Count(*), Max(Price) From Room Where rtype = 'Single' Group by Hotel_No Having Max(Price) < 100;
30
Where before Group by to select records Having after Group by
From Room Order by rtype; pause Where rtype = 'Single'; Select Hotel_no, Count(*), Max(Price) Where rtype = 'Single' Group by Hotel_No; Pause Group by Hotel_No Having Max(Price) < 100; Where before Group by to select records Having after Group by to select groups Let’s do it in 4 steps: From Where Group By Having
31
Where before Group by Having after Group by Order by last
Select Hotel_no, Count(*), Max(Price) From Room Where rtype in ('Double', 'Single') Group by Hotel_No Order by Count(*); pause Having Count(*) > 3 Order by Count(*) desc;
32
Group By Clause Execution Order Where (condition on records) Group by
Having (condition on groups) Order by (Select)
33
Script File Style Prompt Prompt 9.
Prompt For each hotel that has more than Prompt one Single room, list hotel number Prompt with number of Single rooms the hotel Prompt has and the highest price of Prompt such rooms of the hotel. Col Count(*) Format 99 heading "Single Rooms" Col Max(Price) format $ heading "Max Price" Select Hotel_no, Count(*), Max(Price) From Room Where rtype = 'Single' Group by Hotel_No Having Count(*) > 1 Order by Count(*); pause
34
Assignment 8 Due Friday, April 6 Should work for any table instance
Run against my tables Should insert more records to test (Don’t include insert commands!) Example Quiz 3 Hands-On Wednesday, April 7 Create Script file to Drop tables Create tables Column/Table constraints Insert records
35
Quiz 3 Wednesday, April 11 Run Script file to Drop/Create tables, insert records Create Script file to query database Hands-on: in Lab 206 D2L
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.