Download presentation
Presentation is loading. Please wait.
Published byHelena Matthews Modified over 9 years ago
1
INSS 6511 Lecture 5 SQL Continued
2
INSS 6512 SUBQUERIES. Queries inside query There are times when you need information from a table to answer query related to the same table or another table
3
INSS 6513 Format: SQL>SELECT …. FROM WHERE colname1 condition(SELECT col2. (SELECT. ))
4
INSS 6514 List customers whose balance is greater than the average balance of all customers Logic: To answer this query we need to know average balance of all customers We will have to put this in a sub query
5
INSS 6515 List customers whose balance are greater than the average balance of all customers SQL> select * from customer where cust_balance > (Select avg(cust_balance) From customer);
6
INSS 6516 give the customer balance of customer whose order is 123 Logic: Before we can find balance of customer whose order is 123 we need to find the cust_numb first
7
INSS 6517 JOINING TABLES when information needed is in more than one table, we need to join tables; WHERE clause in the select SQL statement creates a join. Note some queries can also be answered using sub query
8
INSS 6518 Rules FOR joining WHERE attribute1 condition attribute2 Ex: where employee.ssn=student.ssn Value(s) from one table are matched value(s) from other tables all matching values are attached allows joining of tables based on common attribute domains without the WHERE clause it will produce a Cartesian product also
9
INSS 6519 Give the names of salesperson and their customers in maryland SQL>Select cust_name, Sales_name from Customer C, salesperson S where c.sales_numb= s. sales_numb’ And Upper(c.cust_st) =‘MD’; C & S are aliases for tables Customer and Salesperson respectively
10
INSS 65110 BUILT-IN-FUNCTIONS AVG(value) MAX(value) MIN(value) SUM(value) STDDEV(value) VARIANCE(value) COUNT(value) Etc…
11
INSS 65111 Nested functions Select max (avg(grades)) etc..is allowed
12
INSS 65112 String functions Several strings can be concatenated Use string1||string 2 || implies + select custname|| ‘,’ || cust_street as address From customer;
13
INSS 65113 Substrings Returns substrings Format: Substr(stringvalue,m,n) Where m is the starting value and n is the length of characters
14
INSS 65114 Assume orders have the format:” Abc1234 cdf2345 etc.. Get the first and last part of the order Select substr (order_numb, 1,3),substr (order_numb,4,4) From order;
15
INSS 65115 Product (p_code, P_price) table P_CODE P_PRICE -------- ---------- 11QER/31 109.99 13-Q2/P2 14.99 14-Q1/L3 17.49 1546-QQ2 39.95 1558-QW1 43.99 2232/QTY 109.92 2232/QWE 99.87 2238/QPD 38.95 23109-HB 9.95 23114-AA 14.4 54778-2T 4.99 P_CODE P_PRICE -------- ---------- 89-WRE-Q 256.99 PVC23DRT 5.87 SM-18277 6.99 SW-23116 8.45 WR3/TT3 119.95 16 rows selected.
16
INSS 65116 Select three characters of price SQL> select substr(p_price,1,3) from product; SUB --- 109 14. 17. 39. 43. 109 99. 38. 9.9 14. 4.9 SUB --- 256 5.8 6.9 8.4 119 16 rows selected.
17
INSS 65117 Padding characters Rpad (string, length,’set’) Lpad (string,length,’set’) 1* select rpad (p_code,15,'.') as rightpad,p_price from product SQL> / RIGHTPAD P_PRICE --------------- ---------- 11QER/31....... 109.99 13-Q2/P2....... 14.99 14-Q1/L3....... 17.49 1546-QQ2....... 39.95 1558-QW1....... 43.99 2232/QTY....... 109.92 2232/QWE....... 99.87 2238/QPD....... 38.95 23109-HB....... 9.95 23114-AA....... 14.4 54778-2T....... 4.99 RIGHTPAD P_PRICE --------------- ---------- 89-WRE-Q....... 256.99 PVC23DRT....... 5.87 SM-18277....... 6.99 SW-23116....... 8.45 WR3/TT3....... 119.95 16 rows selected.
18
INSS 65118 Length of string format length (string) Returns length of the string
19
INSS 65119 SQL> select P_code, length(P_code) from product; P_CODE LENGTH(P_CODE) -------- -------------- 11QER/31 8 13-Q2/P2 8 14-Q1/L3 8 1546-QQ2 8 1558-QW1 8 2232/QTY 8 2232/QWE 8 2238/QPD 8 23109-HB 8 23114-AA 8 54778-2T 8 P_CODE LENGTH(P_CODE) -------- -------------- 89-WRE-Q 8 PVC23DRT 8 SM-18277 8 SW-23116 8 WR3/TT3 8 16 rows selected.
20
INSS 65120 Trimming data LTrim, Rtrim..remove unwanted characters Format: RTRIM (string, ‘set’) Ltrim (string, ‘set’) Set is the collection of characters you want to trim
21
INSS 65121 SQL> select P_code, length(rtrim (P_code,' ')) from product ; P_CODE LENGTH(RTRIM(P_CODE,'')) -------- ------------------------ 11QER/31 8 13-Q2/P2 8 14-Q1/L3 8 1546-QQ2 8 1558-QW1 8 2232/QTY 8 2232/QWE 8 2238/QPD 8 23109-HB 8 23114-AA 8 54778-2T 8 P_CODE LENGTH(RTRIM(P_CODE,'')) -------- ------------------------ 89-WRE-Q 8 PVC23DRT 8 SM-18277 8 SW-23116 8 WR3/TT3 7 16 rows selected.
22
INSS 65122 Remove. From price SQL> select ltrim(p_price,'.'), p_code from product; LTRIM(P_PRICE,'.') P_CODE ---------------------------------------- -------- 109.99 11QER/31 14.99 13-Q2/P2 17.49 14-Q1/L3 39.95 1546-QQ2 43.99 1558-QW1 109.92 2232/QTY 99.87 2232/QWE 38.95 2238/QPD 9.95 23109-HB 14.4 23114-AA 4.99 54778-2T LTRIM(P_PRICE,'.') P_CODE ---------------------------------------- -------- 256.99 89-WRE-Q 5.87 PVC23DRT 6.99 SM-18277 8.45 SW-23116 119.95 WR3/TT3 16 rows selected.
23
INSS 65123 INSTR function Allows searching for a string of characters, gives the position of the string but does Not cut off anything Format: Instr(string, start,occurrence) Start is the start of the string Occurrence is the position of occurrence that you want to search
24
INSS 65124 Search for first “/” in p_code SQL> select p_code, instr(p_code,'/') from product ; ; P_CODE INSTR(P_CODE,'/') -------- ----------------- 11QER/31 6 13-Q2/P2 6 14-Q1/L3 6 1546-QQ2 0 1558-QW1 0 2232/QTY 5 2232/QWE 5 2238/QPD 5 23109-HB 0 23114-AA 0 54778-2T 0 P_CODE INSTR(P_CODE,'/') -------- ----------------- 89-WRE-Q 0 PVC23DRT 0 SM-18277 0 SW-23116 0 WR3/TT3 4 16 rows selected.
25
INSS 65125 Separate P_code in two parts: before _ and after _ for names that contain - SQL> select p_code, substr(P_code, 1, instr(p_code,'/')) part1 from product where p_code like '%/%'; 2 3 P_CODE PART1 -------- 11QER/31 11QER/ 13-Q2/P2 13-Q2/ 14-Q1/L3 14-Q1/ 2232/QTY 2232/ 2232/QWE 2232/ 2238/QPD 2238/ WR3/TT3 WR3/ 7 rows selected.
26
INSS 65126 SQL> select p_code, substr(P_code, 1, instr(p_code,'/')-1) part1 from product where p_code like '%/%'; 2 3 P_CODE PART1 -------- 11QER/31 11QER 13-Q2/P2 13-Q2 14-Q1/L3 14-Q1 2232/QTY 2232 2232/QWE 2232 2238/QPD 2238 WR3/TT3 WR3 7 rows selected.
27
INSS 65127 Get the right part SQL> select p_code, substr(P_code, instr(p_code,'/')) part2 from product where p_code like '%/%'; 2 3 P_CODE PART2 -------- 11QER/31 /31 13-Q2/P2 /P2 14-Q1/L3 /L3 2232/QTY /QTY 2232/QWE /QWE 2238/QPD /QPD WR3/TT3 /TT3 7 rows selected.
28
INSS 65128 SQL> select p_code, substr(P_code, instr(p_code,'/')+1) part2 from product where p_code like '%/%'; 2 3 P_CODE PART2 -------- 11QER/31 31 13-Q2/P2 P2 14-Q1/L3 L3 2232/QTY QTY 2232/QWE QWE 2238/QPD QPD WR3/TT3 TT3 7 rows selected.
29
INSS 65129 SQL> select p_code, substr(P_code, 1, instr(p_code,'/')-1) part1, substr(P_code, instr(p_code,'/')+1) part2 from product where p_code like '%/%'; 2 3 P_CODE PART1 PART2 -------- -------- -------- 11QER/31 11QER 31 13-Q2/P2 13-Q2 P2 14-Q1/L3 14-Q1 L3 2232/QTY 2232 QTY 2232/QWE 2232 QWE 2238/QPD 2238 QPD WR3/TT3 WR3 TT3 7 rows selected.
30
INSS 65130 Remove the period from price
31
INSS 65131 SQL> select (substr(P_price, 1, instr(p_price,'.')-1) || substr (P_price, instr(p_price,'.')+1)) as price from product; 2 3 PRICE -------------------------------------------------------------------------------- 10999 1499 1749 3995 4399 10992 9987 3895 995 144 499 PRICE -------------------------------------------------------------------------------- 25699 587 699 845 11995 16 rows selected.
32
INSS 65132 COMMON ERRORS
33
INSS 65133 INTEGRITY CONSTRAINT VIOLATION SQL> select * from trial1; SN SCITY --- -------------------- 111 baltimore SQL> insert into trial2 values (234,222); insert into trial2 values (234,222) * ERROR at line 1: ORA-02291: integrity constraint (AGGARWAL.SYS_C0026818) violated - parent key not found
34
INSS 65134 TOO MANY VALUES SQL> l 1 select * from invoice where cust_code in 2* (select inv-num, inv_date from invoice) SQL> / (select inv-num, inv_date from invoice) * ERROR at line 2: ORA-00913: too many values
35
INSS 65135 LEASE TABLE SQL> desc lease; Name Null? Type ----------------------------------------- -------- ------------------------ ---- L_NO NOT NULL CHAR(6) P_NO CHAR(5) RENTER_NO CHAR(4) RENT NUMBER(5) PAYMENT CHAR(5) START_DATE DATE FIN_DATE DATE
36
INSS 65136 MISMATCH COMPARISON SQL> / select * from lease where rent in (select payment from lease) * ERROR at line 1: ORA-01722: invalid number
37
INSS 65137 UNIQUE CONSTRAINT VIOLATION SQL> select * from trial1; SN SCITY --- -------------------- 111 baltimore SQL> insert into trial1 values (111,'mass'); insert into trial1 values * ERROR at line 1: ORA-00001: unique constraint (AGGARWAL.SYS_C0026745) violated
38
INSS 65138 NOT a Single_Group Function select distinct l_no, sum(rent) * ERROR at line 1: ORA-00937: not a single-group group function
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.