Download presentation
Presentation is loading. Please wait.
Published byMaximilian Hensley Modified over 8 years ago
1
1 Introduction to Database Systems, CS420 SQL JOIN, Group-by and Sub-query Clauses
2
Agenda Functions Group functions Outer Join Sub-queries 2
3
SQL Statements DML (Data Manipulation Language) SELECT INSERT UPDATE DELETE DDL (Data Definition Language) CREATE ALTER DROP DCL and Transaction Control GRANT REVOKE COMMIT ROLLBACK 3
4
REVIEW: SQL SELECT 4
5
BETWEEN Operator Use the BETWEEN operator to display rows based on a range of values SELECTlast_name, salary FROM employees WHEREsalary BETWEEN 2500 AND 3500 ; 5
6
Membership Condition Using IN Use the IN operator to test for values in a list SELECT last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201) ; 6
7
Using NULL Conditions Test for nulls with IS NULL operator SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL ; Note: you cannot test with = A null is not equal, or unequal to any value 7
8
ORDER BY Clause Sort retrieved rows with ORDER BY clause ASC: Ascending order, default DESC: Descending order The ORDER BY clause comes last in the SELECT statement SELECTlast_name, department_id, hire_date FROMemployees ORDER BY hire_date; 8
9
Sorting Sorting in descending order SELECTlast_name, department_id, hire_date FROMemployees ORDER BY hire_date DESC ; Sorting by column alias SELECTlast_name, salary*12 annsal FROMemployees ORDER BY annsal ; 9
10
Sorting (cont.) Sorting using column’s numeric position SELECTlast_name, job_id, hire_date, salary FROMemployees ORDER BY 3; Sorting by multiple columns SELECTlast_name, job_id, salary FROMemployees ORDER BY job_id, salary DESC ; 10
11
11 Functions
12
Case-Conversion Functions FunctionResult LOWER(‘SQL Course’)sql course UPPER(‘SQL Course’)SQL COURSE INITCAP(‘SQL Course’)Sql Course 12
13
Example: Case-Conversion SELECTlast_name, job_id, salary FROMemployees WHERElast_name = ‘peng’; 0 rows returned. SELECTlast_name, job_id, salary FROMemployees WHERELOWER(last_name) = ‘peng’; 1 rows returned. 13
14
Character Manipulation Functions FunctionResult SUBSTR(‘HelloWorld’, 1,5)Hello LENGTH(‘HelloWorld’)10 INSTR(‘HelloWorld’, ‘W’)6 LPAD(salary, 10, ‘*’)*****24000 RPAD(salary, 10, ‘*’)24000***** 14
15
Number Functions FunctionResult ROUND(45.926, 2)45.93 TRUNC(45.926, 2)45.92 Remainder = MOD(1600, 300)100 15
16
Group Functions FunctionDescription AVGAverage COUNTNumber of rows SUMSum values MAX/MINMaximum / Minimum value 16
17
GROUP Functions and Null Value Group functions ignore null values in the column SELECTAVG(commision_pct) FROMemployees; 17
18
Creating Groups of Data You can divide rows in a table into smaller groups using the GROUP BY clause SELECTcolumn, group_function(column) FROMtable [WHREEcondition] [GROUP BY group_by_expression] [ORDER BYcolumn]; 18
19
Example: GROUP BY All columns in the SELECT list that are not in group functions must be in the GROUP BY clause SELECTdepartment_id, AVG(salary) FROMemployees GROUP BY department_id; 19
20
Illegal Queries with Group Functions SELECTdepartment_id, COUNT(name) FROMemployees; SELECTdepartment_id, job_id, COUNT(name) FROMemployees GROUP BY department_id; Either remove job_id, or Add job_id in the GROUP_BY A GROUP_BY clause must be added to count the name for each dept!! 20
21
You cannot use the WHERE clause to restrict groups SELECTdepartment_id, AVG(salary) FROMemployees WHEREAVG(salary) > 8000 GROUP BY department_id; Use the HAVING clause to restrict groups SELECTdepartment_id, AVG(salary) FROMemployees GROUP BY department_id HAVINGAVG(salary) > 8000 21 Illegal Queries with Group Functions
22
Restricting Group Results with the HAVING clause When you use the HAVING clause, Oracle server restricts groups as follows 1. Rows are grouped 2. The group function is applied 3. Groups matching the HAVING clause are displayed 22
23
23 Outer Join
24
Left Outer Join SELECTe.last_name, d.department_name FROMemployees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) Display all the rows in the EMPLOYEES table, which is the left table, even if there is no match in the DEPARTMENTS table 24
25
Right Outer Join SELECTe.last_name, d.department_name FROMemployees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) Display all the rows in the DEPARTMENTS table, which is the right table, even if there is no match in the EMPLOYEES table 25
26
Full Outer Join SELECTe.last_name, d.department_name FROMemployees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id) Display all the rows in the EMPLOYEES table, even if there is no match in the DEPARTMENTS table. Also display all the rows in the DEPARTMENTS table, even if there is no match in the EMPLOYEES table. 26
27
Cartesian Products A Cartesian product is formed when A join condition is omitted A join condition is invalid All rows in the first table are joined to all rows in the second table To avoid a Cartesian product, always include a valid join condition 27
28
28 Subquery
29
Subquery (Nested SELECT) SELECTselect_list FROMtable WHERE expr operator (SELECTselect_list FROMtable) The subquery (inner query) executes before the main query (outer query) The result of the subquery is used by the main query 29
30
Using Group Functions in a Subquery SELECTlast_name, job_id, salary FROMemployees WHERE salary = (SELECTMIN(salary) FROMemployees); Note the subquery returns a single value, say 2500, to the outer query. 30
31
What’s Wrong with this Statement? SELECTlast_name, salary FROMemployees WHERE salary = (SELECTMIN(salary) FROMemployees GROUP BY department_id) ; The subquery returns multiple values, one for each group. The = operator is a single-row comparison operator that expects only one value. 31
32
Multi-Row Subqueries SELECTlast_name, salary FROMemployees WHERE salary IN (SELECTMIN(salary) FROMemployees GROUP BY department_id); The subquery returns multiple values, one for each group. We use IN operator here, which is a multi-row operator that expects one or more values. 32
33
Summary Functions String function Numeric functions Group functions Outer Join Sub-query 33
34
34 END
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.