Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Introduction to Database Systems, CS420 SQL JOIN, Group-by and Sub-query Clauses.

Similar presentations


Presentation on theme: "1 Introduction to Database Systems, CS420 SQL JOIN, Group-by and Sub-query Clauses."— Presentation transcript:

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


Download ppt "1 Introduction to Database Systems, CS420 SQL JOIN, Group-by and Sub-query Clauses."

Similar presentations


Ads by Google