├── README.md ├── SQLforEveryone1.1.pdf ├── SQLforEveryone1.2.pdf ├── SQLforEveryone1.3.pdf ├── SQLforEveryone1.4.pdf ├── SQLforEveryone1.5.pdf ├── SQLforEveryone1.6.pdf ├── SQLforEveryone1.8.pdf ├── aiq-sql-4-7.csv ├── aiquest4_6.txt.csv ├── aiquest6.txt ├── aiquest7.txt ├── aiquest8.txt ├── class1.5 script.txt ├── class14-window.rtf ├── class17.rtf ├── department_202310082106.csv ├── employees_dump.csv ├── employees_managersemployee_202310082109.csv ├── new_departments.csv ├── new_employees.csv ├── sal.xlsx ├── sql10.txt ├── sql11.rtf ├── sql13.rtf └── sql9.txt /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |Welcome to the SQL for Everybody repository! This repository contains comprehensive materials to help you learn SQL, curated by Study Mart and aiQuest Intelligence. This is a complete course covering topics from basic to advanced levels.
9 | 10 |SQL for Everybody
12 | 13 |Learn the full course for free on YouTube: SQL for Everybody Playlist
26 | 27 |Explore the materials in detail here.
29 | 30 |We also offer a variety of paid courses on data science on our website. Visit AIQuest for more details.
32 |For free resources, check out our YouTube channel: StudyMart.
33 |Join our Facebook group for more discussions and resources: StudyMart Facebook Group.
34 | 35 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /SQLforEveryone1.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.1.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.2.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.3.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.4.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.5.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.6.pdf -------------------------------------------------------------------------------- /SQLforEveryone1.8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/SQLforEveryone1.8.pdf -------------------------------------------------------------------------------- /aiq-sql-4-7.csv: -------------------------------------------------------------------------------- 1 | department_id|department_name|manager_id|location_id|is_active 2 | 10|Administration|200|1700|true 3 | 30|Purchasing|114|1700|true 4 | 40|Human Resources|203|2400|true 5 | 50|Shipping|121|1500|true 6 | 60|IT|103|1400|true 7 | 70|Public Relations|204|2700|true 8 | 80|Sales|145|2500|true 9 | 90|Executive|100|1700|true 10 | 100|Finance|108|1700|true 11 | 110|Accounting|205|1700|true 12 | 120|Treasury||1700|true 13 | 130|Corporate Tax||1700|true 14 | 150|Shareholder Services||1700|true 15 | 160|Benefits||1700|true 16 | 180|Construction||1700|true 17 | 190|Contracting||1700|true 18 | 210|IT Support||1700|true 19 | 220|NOC||1700|true 20 | 230|IT Helpdesk||1700|true 21 | 240|Government Sales||1700|true 22 | 260|Recruiting||1700|true 23 | 270|Payroll||1700|true 24 | 250|Retail Sales||1700|false 25 | 140|Control And Credit||1700| 26 | 200|Operations||2300|false 27 | 170|Manufacturing||1700|false 28 | 20|Marketing|201|1800|false 29 | 1|habijabi||1700|true 30 | 31 | 32 | --#new EDITOR-> CTRL + ] 33 | 34 | 35 | --create table sales. 36 | insert into schema.table 37 | --(columns) 38 | --values () 39 | 40 | insert into sales.students 41 | (name,students_id) 42 | values 43 | ('abcd',64564), 44 | ('Mr Abul',65456); 45 | 46 | insert into sales.students 47 | values 48 | (645,'uyf'), 49 | (6545,'Mr bablu'); 50 | ---- 51 | --DDL 52 | --create schema practice; 53 | create table practice.departments 54 | (department_id serial, 55 | department_name varchar, 56 | manager_id int, 57 | location_id int, 58 | is_active bool); 59 | 60 | ---DDL 61 | alter table practice.departments 62 | add created_at 63 | timestamp 64 | --null 65 | default now(); 66 | 67 | 68 | --DDL 69 | create table practice.departments_copy 70 | as 71 | select 72 | manager_id, 73 | department_name 74 | from practice.departments 75 | limit 0; 76 | 77 | insert into practice.departments_copy 78 | select 79 | manager_id, 80 | department_name 81 | from practice.departments limit 1; 82 | 83 | ---DDL 84 | select 85 | manager_id, 86 | department_name 87 | into practice.departments_copy 88 | from practice.departments limit 2; 89 | 90 | 91 | ###INSERTING_2_VALUES_INTO_DEPT_CP 92 | ---DML 93 | insert into practice.departments_copy 94 | select 95 | manager_id, 96 | department_name 97 | from practice.departments limit 2; 98 | 99 | ---DML 100 | insert into practice.departments_copy 101 | select 102 | 99999,'MY DEPARTMENT'; 103 | 104 | --DML 105 | insert into practice.departments_copy 106 | VALUES 107 | (88888,'MY DEPARTMENT2'); 108 | 109 | --###DELETING_VALUES_FROM_DEPT_CP 110 | 111 | ---DELETE (CONDITIONAL/FILTER) 112 | --where MUST 113 | delete 114 | from 115 | practice.departments_copy ; 116 | --REVOES ALL DATE / CLEANES THE TABLE 117 | --REVERT KORO to ###DELETING_VALUES_FROM_DEPT_CP 118 | 119 | 120 | delete 121 | from 122 | practice.departments_copy 123 | where manager_id =99999; 124 | 125 | delete 126 | from 127 | practice.departments_copy 128 | where manager_id =200; 129 | 130 | 131 | ----DML 132 | delete 133 | from 134 | practice.departments_copy 135 | where TRUE; 136 | 137 | ###PILLER_REMOVING_ALL_DATA 138 | --DDL 139 | truncate table 140 | practice.departments_copy ; 141 | 142 | create schema backup_removed_robiul; 143 | 144 | --select * 145 | --into 146 | --backup_removed_robiul.departments_copy_manager_id_99999_20230901_10_2pm 147 | --from 148 | --practice.departments_copy 149 | --where manager_id =99999; 150 | 151 | ##PILLER_X 152 | delete 153 | from 154 | practice.departments_copy 155 | where manager_id =99999; 156 | 157 | insert into 158 | practice.departments_copy 159 | select * from backup_removed_robiul.departments_copy_manager_id_99999_20230901_10_2pm ; 160 | 161 | 162 | ----UPDATE (WHERE/FILTER MUST) 163 | update 164 | practice.departments_copy 165 | set department_name='DEPT999' 166 | where manager_id=99999; 167 | 168 | 169 | update 170 | practice.departments_copy 171 | set 172 | department_name='DEPTNEW' 173 | ,manager_id =878787 174 | where manager_id=99999; 175 | 176 | ----------- 177 | 178 | select * 179 | into practice.new_dept 180 | from practice.departments 181 | limit 5; 182 | ----------- 183 | 184 | 185 | delete 186 | from 187 | practice.departments_copy 188 | where manager_id =99999; 189 | 190 | 191 | 192 | ---ALIASING 193 | ---COLUMN LEVEL, TABLE LEVEL 194 | select 195 | department_id as ID, department_name as name 196 | from 197 | practice.departments; 198 | 199 | select 200 | dept.department_id, dept.department_name 201 | from 202 | practice.departments AS dept; 203 | 204 | select 205 | dept.department_id, dept.department_name 206 | from 207 | practice.departments dept; 208 | 209 | select 210 | department_id as id, department_name name 211 | from 212 | practice.departments dept; 213 | 214 | --delete 215 | --from 216 | --practice.departments 217 | --where manager_id =99999; 218 | 219 | 220 | ---REMOVE THOSE ROWS FROM DEPT 221 | --where DEPT IDs EXISTS IN NEW_DEP 222 | --AND NEW_DEPT ID > 40 223 | 1. delete from DEPT 224 | 2. where DEPT_ID in NEW_DEP 225 | 3. and NEW_DEP_ID >40 226 | 227 | delete 228 | from 229 | practice.departments dpt 230 | USING 231 | practice.new_dept as new_dpt 232 | where dpt.department_id = new_dpt.department_id 233 | and new_dpt.department_id >40; 234 | 235 | ---UPDATE THOSE ROWS FROM DEPT 236 | --- SET DEPT_ID = 1000+ existing id 237 | --where DEPT IDs DOES NOT EXIST IN NEW_DEP 238 | --AND NEW_DEPT ID < 40 239 | update 240 | practice.departments dpt 241 | set department_id = dpt.department_id+1000 242 | from 243 | practice.new_dept newd 244 | where 245 | newd.department_id <> dpt.department_id 246 | and newd.department_id <40; 247 | 248 | ----------------- 249 | 250 | update 251 | practice.departments dpt 252 | set department_id = dpt.department_id+99 253 | from 254 | (select newd.department_id 255 | from practice.new_dept newd 256 | where 257 | newd.department_id <40) newdpt 258 | where newdpt.department_id= dpt.department_id 259 | ; 260 | 261 | --select 262 | --1000+1000; 263 | 264 | -------------------------------------------------------------------------------- /aiquest4_6.txt.csv: -------------------------------------------------------------------------------- 1 | id, name, address 2 | 646, uigfyjgg, hjgfjhflkyhiuootvtjriu 3 | 6468, uyrfyuri7, dhaka 1200 4 | -------------------------------------------------------------------------------- /aiquest6.txt: -------------------------------------------------------------------------------- 1 | 2 | create user shuvo with password 'abCd' 3 | valid until '2023-09-30'; 4 | 5 | grant usage on schema sales to shuvo; 6 | grant select on table sales.students to shuvo; 7 | grant select on table sales.orders to shuvo; 8 | revoke select on table sales.orders from shuvo; 9 | 10 | ALTER user shuvo 11 | valid until '2023-10-01'; 12 | 13 | ALTER user shuvo 14 | valid until 'infinity'; 15 | 16 | -- VAPT 17 | 18 | ALTER TABLE sales.students 19 | owner to shuvo; 20 | 21 | 22 | create table sales.new_tbl (id int, name text); 23 | DROP TABLE sales.new_tbl ; 24 | 25 | 26 | create TEMPORARY table new_tbl (id int, name text); 27 | 28 | INSERT INTO new_tbl 29 | (id , name ) 30 | VALUES 31 | (64,'ujyfuyf'), 32 | (68,'jhfuy564'); 33 | 34 | select * from new_tbl; 35 | ----. 36 | create table new_tbl (id int, name text, creation_date date) 37 | partition by range(creation_date); 38 | 39 | INSERT INTO new_tbl 40 | (id , name, creation_date ) 41 | VALUES 42 | (64,'ujyfuyf','2023-09-30'), 43 | (68,'jhfuy564','2023-09-28'); 44 | 45 | create table new_tbl_2023_09_30 PARTITION of new_tbl DEFAULT; 46 | 47 | SELECT * from information_schema.tables ; 48 | 49 | CREATE INDEX order_id_idx ON sales.orders (order_id); 50 | DROP INDEX order_id_idx ; 51 | 52 | create table sales.new_tbl (id int PRIMARY KEY, name text); 53 | 54 | create table sales.employees(id serial primary key , emp_name varchar, created_at date); 55 | 56 | create table sales.departments(id serial primary key , dept_name varchar, 57 | emp_id int, created_at date); 58 | 59 | ALTER TABLE sales.departments 60 | ADD CONSTRAINT fk_dept_emp 61 | FOREIGN KEY(emp_id) 62 | REFERENCES sales.departments(id); 63 | 64 | INSERT INTO sales.employees 65 | (id, emp_name, created_at ) 66 | values 67 | (646,'ABCd',CURRENT_DATE); 68 | 69 | select * from 70 | sales.employees; 71 | 72 | select emp_name,now() as created_at INTO sales.employees_copy2 from sales.employees; 73 | 74 | create table sales.created_from_emp 75 | AS 76 | select * from sales.aiquest_test_csv 77 | limit 1; 78 | 79 | -------------------------------------------------------------------------------- /aiquest7.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | --#new EDITOR-> CTRL + ] 4 | 5 | 6 | --create table sales. 7 | insert into schema.table 8 | --(columns) 9 | --values () 10 | 11 | insert into sales.students 12 | (name,students_id) 13 | values 14 | ('abcd',64564), 15 | ('Mr Abul',65456); 16 | 17 | insert into sales.students 18 | values 19 | (645,'uyf'), 20 | (6545,'Mr bablu'); 21 | ---- 22 | --DDL 23 | --create schema practice; 24 | create table practice.departments 25 | (department_id serial, 26 | department_name varchar, 27 | manager_id int, 28 | location_id int, 29 | is_active bool); 30 | 31 | ---DDL 32 | alter table practice.departments 33 | add created_at 34 | timestamp 35 | --null 36 | default now(); 37 | 38 | 39 | --DDL 40 | create table practice.departments_copy 41 | as 42 | select 43 | manager_id, 44 | department_name 45 | from practice.departments 46 | limit 0; 47 | 48 | insert into practice.departments_copy 49 | select 50 | manager_id, 51 | department_name 52 | from practice.departments limit 1; 53 | 54 | ---DDL 55 | select 56 | manager_id, 57 | department_name 58 | into practice.departments_copy 59 | from practice.departments limit 2; 60 | 61 | 62 | ###INSERTING_2_VALUES_INTO_DEPT_CP 63 | ---DML 64 | insert into practice.departments_copy 65 | select 66 | manager_id, 67 | department_name 68 | from practice.departments limit 2; 69 | 70 | ---DML 71 | insert into practice.departments_copy 72 | select 73 | 99999,'MY DEPARTMENT'; 74 | 75 | --DML 76 | insert into practice.departments_copy 77 | VALUES 78 | (88888,'MY DEPARTMENT2'); 79 | 80 | --###DELETING_VALUES_FROM_DEPT_CP 81 | 82 | ---DELETE (CONDITIONAL/FILTER) 83 | --where MUST 84 | delete 85 | from 86 | practice.departments_copy ; 87 | --REVOES ALL DATE / CLEANES THE TABLE 88 | --REVERT KORO to ###DELETING_VALUES_FROM_DEPT_CP 89 | 90 | 91 | delete 92 | from 93 | practice.departments_copy 94 | where manager_id =99999; 95 | 96 | delete 97 | from 98 | practice.departments_copy 99 | where manager_id =200; 100 | 101 | 102 | ----DML 103 | delete 104 | from 105 | practice.departments_copy 106 | where TRUE; 107 | 108 | ###PILLER_REMOVING_ALL_DATA 109 | --DDL 110 | truncate table 111 | practice.departments_copy ; 112 | 113 | create schema backup_removed_robiul; 114 | 115 | --select * 116 | --into 117 | --backup_removed_robiul.departments_copy_manager_id_99999_20230901_10_2pm 118 | --from 119 | --practice.departments_copy 120 | --where manager_id =99999; 121 | 122 | ##PILLER_X 123 | delete 124 | from 125 | practice.departments_copy 126 | where manager_id =99999; 127 | 128 | insert into 129 | practice.departments_copy 130 | select * from backup_removed_robiul.departments_copy_manager_id_99999_20230901_10_2pm ; 131 | 132 | 133 | ----UPDATE (WHERE/FILTER MUST) 134 | update 135 | practice.departments_copy 136 | set department_name='DEPT999' 137 | where manager_id=99999; 138 | 139 | 140 | update 141 | practice.departments_copy 142 | set 143 | department_name='DEPTNEW' 144 | ,manager_id =878787 145 | where manager_id=99999; 146 | 147 | ----------- 148 | 149 | select * 150 | into practice.new_dept 151 | from practice.departments 152 | limit 5; 153 | ----------- 154 | 155 | 156 | delete 157 | from 158 | practice.departments_copy 159 | where manager_id =99999; 160 | 161 | 162 | 163 | ---ALIASING 164 | ---COLUMN LEVEL, TABLE LEVEL 165 | select 166 | department_id as ID, department_name as name 167 | from 168 | practice.departments; 169 | 170 | select 171 | dept.department_id, dept.department_name 172 | from 173 | practice.departments AS dept; 174 | 175 | select 176 | dept.department_id, dept.department_name 177 | from 178 | practice.departments dept; 179 | 180 | select 181 | department_id as id, department_name name 182 | from 183 | practice.departments dept; 184 | 185 | --delete 186 | --from 187 | --practice.departments 188 | --where manager_id =99999; 189 | 190 | 191 | ---REMOVE THOSE ROWS FROM DEPT 192 | --where DEPT IDs EXISTS IN NEW_DEP 193 | --AND NEW_DEPT ID > 40 194 | 1. delete from DEPT 195 | 2. where DEPT_ID in NEW_DEP 196 | 3. and NEW_DEP_ID >40 197 | 198 | delete 199 | from 200 | practice.departments dpt 201 | USING 202 | practice.new_dept as new_dpt 203 | where dpt.department_id = new_dpt.department_id 204 | and new_dpt.department_id >40; 205 | 206 | ---UPDATE THOSE ROWS FROM DEPT 207 | --- SET DEPT_ID = 1000+ existing id 208 | --where DEPT IDs DOES NOT EXIST IN NEW_DEP 209 | --AND NEW_DEPT ID < 40 210 | update 211 | practice.departments dpt 212 | set department_id = dpt.department_id+1000 213 | from 214 | practice.new_dept newd 215 | where 216 | newd.department_id <> dpt.department_id 217 | and newd.department_id <40; 218 | 219 | ----------------- 220 | 221 | update 222 | practice.departments dpt 223 | set department_id = dpt.department_id+99 224 | from 225 | (select newd.department_id 226 | from practice.new_dept newd 227 | where 228 | newd.department_id <40) newdpt 229 | where newdpt.department_id= dpt.department_id 230 | ; 231 | 232 | --select 233 | --1000+1000; 234 | 235 | -------------------------------------------------------------------------------- /aiquest8.txt: -------------------------------------------------------------------------------- 1 | --SQL SYNTAX IS NOT CASE INSENSITIVE 2 | --"" --> BIND 3 | 4 | drop table if exists practice.employee; 5 | drop table if exists practice.employees; 6 | 7 | 8 | create table 9 | practice.employees 10 | ( 11 | emp_no serial not null, --not null CONSTRAINT 12 | birth_date Date, 13 | first_name varchar, 14 | last_name varchar, 15 | gender varchar, 16 | hire_date DATE, 17 | primary KEY(emp_no) --DUNPLICATE not ALLOWED, NULL not ALLOWED 18 | ); 19 | 20 | alter table practice.employees 21 | add manager int; 22 | 23 | truncate practice.employees ; 24 | 25 | delete from practice.employees 26 | where gender not in ('M','F'); 27 | 28 | alter table practice.employees 29 | add constraint emp_check_gender 30 | CHECK(gender in ('M','F')); 31 | 32 | 33 | create schema stage; 34 | 35 | select 36 | distinct 37 | emp.gender 38 | from 39 | stage.employees as emp ; 40 | 41 | update 42 | stage.employees emps 43 | set gender = 'F' 44 | where emps.gender = 'Female'; 45 | 46 | insert into 47 | practice.employees 48 | select 49 | * from 50 | stage.employees e 51 | --limit 5; 52 | 53 | 54 | 55 | /* 56 | '' 57 | 0 58 | NULL 59 | */ 60 | 61 | --CTRL + SHIFT +/ 62 | --CTRL+/ 63 | 64 | --drop table 65 | --practice.employees 66 | 67 | create table 68 | if not EXISTS 69 | practice.employees 70 | ( 71 | emp_no serial not null, --not null CONSTRAINT 72 | birth_date Date, 73 | first_name varchar, 74 | last_name varchar, 75 | gender varchar check(gender ='F'), 76 | hire_date DATE, 77 | nid bigint , 78 | primary KEY(emp_no) --DUNPLICATE not ALLOWED, NULL not ALLOWED 79 | unique (nid) 80 | ); 81 | 82 | select 83 | * from 84 | practice.employees e ; 85 | 86 | 87 | update 88 | practice.employees e 89 | set dep = NULL 90 | where e.emp_no =10001; 91 | 92 | alter table 93 | practice.employees 94 | add constraint emp_dep_fk 95 | foreign key(dep) 96 | references practice.department(dept_no) 97 | ; 98 | 99 | -- there is no unique constraint matching given keys for referenced table "department" 100 | 101 | alter table practice.department 102 | add constraint dep_pk 103 | primary key (dept_no); 104 | 105 | update 106 | practice.employees e 107 | set dep = 'd7987' 108 | where e.emp_no =10001; 109 | 110 | SQL Error [23503]: ERROR: insert or update on table "employees" violates 111 | foreign key constraint "emp_dep_fk" 112 | Detail: Key (dep)=(d7987) is not present in table "department". 113 | 114 | --DATA TYPE MUST BE SAME 115 | --DATA SHOULD EXIST IN MAIN?REFERRED TABLE 116 | 117 | --DDL 118 | -- created_at 119 | -- is_deleted 120 | 121 | --alter table 122 | --practice.department 123 | --add created_at timestamp 124 | 125 | alter table 126 | practice.department 127 | add is_deleted bool 128 | default FALSE; 129 | --T/F 130 | 131 | alter table practice.department 132 | drop created_at; 133 | 134 | 135 | alter table 136 | practice.department 137 | add created_at timestamp 138 | default now(); 139 | 140 | update 141 | practice.department d 142 | set is_deleted=true 143 | where d.dept_name ='Research'; 144 | 145 | select 146 | * 147 | from 148 | practice.department d 149 | where is_deleted = false; 150 | 151 | 152 | -------------------------------------------------------------------------------- /class1.5 script.txt: -------------------------------------------------------------------------------- 1 | 2 | DDL = Data Definition lang [CREATE,ALTER,DROP] --> ARCHITECTURE 3 | DML = Data manipulation lang [INSERT,UPDATE,DELETE] --> DATA LAYER 4 | DCL /TCL = Data/ Transactrion control lang[grant, revoke] --> PERMISSION MANAGEMENT 5 | DTL = Data transformation lang [COMMIT, ROLLBACL] --> Flow complete / Revert 6 | DQL = Data Query lang [SELECT] --> ANALYRICS, REPORTING 7 | 8 | ---WRITING SEQUENCE 9 | SELECT (COLUMNS WE WANT TO SEE) 10 | FROM (TABLE NAMES, JOIn) 11 | WHERE (ROWS WE WANT TO SEE/ FILTER) 12 | GROUP BY (GROUPPING SOME columns) 13 | HAVING (FILTER ON GROUP) 14 | ORDER BY (SORTING) 15 | LIMIT (HOW MANY ROWS WE WANT TO SEE) 16 | 17 | --Creating orders table 18 | CREATE TABLE sales.orders 19 | (order_id serial , cust_name varchar, amount float); 20 | --INSERTING SOME DATA INTO ORDERS TABLE 21 | INSERT INTO sales.orders 22 | (order_id, cust_name, amount) 23 | VALUES 24 | (6545,'ABC', 654.54), 25 | (6945,'ABC', 554.57), 26 | (6645,'ABC', 64.74); 27 | 28 | 29 | ------------- 30 | ||||||||||||| 31 | ------------- 32 | 33 | INSERT INTO sales.orders 34 | (cust_name, order_id, amount) 35 | VALUES 36 | ('ABC', 6545,654.54), 37 | ('JHGF',6945, 554.57), 38 | ('UhF', 6645,64.74); 39 | 40 | INSERT INTO sales.orders 41 | VALUES 42 | (154,'ABC', 54.54), 43 | (547,'NEWTBL', 54.57), 44 | (6545,'ABC', 71.74); 45 | 46 | 47 | ---WRITING SEQUENCE 48 | -- SELECT (COLUMNS WE WANT TO SEE) 49 | select * 50 | -- FROM (TABLE NAMES, JOIn) 51 | FROM sales.orders 52 | -- WHERE (ROWS WE WANT TO SEE/ FILTER) 53 | WHERE amount>70 54 | -- GROUP BY (GROUPPING SOME columns) 55 | -- HAVING (FILTER ON GROUP) 56 | -- ORDER BY (SORTING) 57 | -- LIMIT (HOW MANY ROWS WE WANT TO SEE) 58 | LIMIT 2; 59 | 60 | 61 | -- INTERNALS 62 | => PARSING 63 | CHECKS SYNYAX OF QUERY 64 | CHECK STRUCTURE 65 | => OPTIMIZATION 66 | TRIES to find most optimal way to execute 67 | FINDS Various ways /tricks / strategies , pick one best 68 | CHEck INDEXING, PARTITIONING 69 | => GENERATE DATA FROM SOURCE 70 | 71 | 72 | -------------------------------------------------------------------------------- /class14-window.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2639 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 6 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 7 | 8 | \f0\fs24 \cf0 \ 9 | --WINDOW \ 10 | \ 11 | -- Q. What is the running total of salaries of each dept?\ 12 | /*\ 13 | emp x (IT) = 1\ 14 | emp y (IT) = 2+1=3 \ 15 | emp z (IT)= 1 = 1+3=4 \ 16 | emp a (HR)= 6 \ 17 | emp b (HR)= 1 = 6+1 =7 \ 18 | */\ 19 | \ 20 | SELECT\ 21 | ROW_NUMBER() over() as "ROW NUMBER",\ 22 | emp.last_name,\ 23 | emp.department_id,\ 24 | emp.salary\ 25 | from \ 26 | practice.employees emp;\ 27 | \ 28 | SELECT\ 29 | ROW_NUMBER() over(PARTITION BY emp.department_id) as "ROW NUMBER",\ 30 | emp.last_name,\ 31 | emp.department_id,\ 32 | emp.salary\ 33 | from \ 34 | practice.employees emp;\ 35 | \ 36 | \ 37 | SELECT\ 38 | emp.last_name,\ 39 | emp.department_id,\ 40 | emp.salary,\ 41 | sum(emp.salary) OVER (PARTITION BY emp.department_id order by emp.salary asc) "cum_sal/running_total"\ 42 | from \ 43 | practice.employees emp\ 44 | ;\ 45 | \ 46 | -- Q. SHow ranks of employees depending on their salary\ 47 | SELECT\ 48 | emp.last_name,\ 49 | emp.department_id,\ 50 | emp.salary,\ 51 | RANK() OVER(PARTITION BY emp.department_id ORDer by emp.salary desc) "RANK"\ 52 | from \ 53 | practice.employees emp\ 54 | ;\ 55 | \ 56 | \ 57 | \ 58 | -- Q. SHow ranks of employees depending on their salary\ 59 | SELECT\ 60 | emp.last_name,\ 61 | emp.department_id,\ 62 | emp.salary,\ 63 | DENSE_RANK() OVER(PARTITION BY emp.department_id ORDer by emp.salary desc) "RANK"\ 64 | from \ 65 | practice.employees emp\ 66 | ;\ 67 | \ 68 | -- Q. SHOW the difference between each employee and avg of salary in their dept\ 69 | SELECT\ 70 | emp.last_name,\ 71 | emp.department_id,\ 72 | emp.salary,\ 73 | AVG(emp.SALARY) OVER(PARTITION BY emp.department_id) "dept_av_sal"\ 74 | from \ 75 | practice.employees emp\ 76 | ;\ 77 | \ 78 | SELECT\ 79 | emp.last_name,\ 80 | emp.department_id,\ 81 | emp.salary,\ 82 | emp.salary - AVG(emp.SALARY) OVER(PARTITION BY emp.department_id) "Salary Difference"\ 83 | from \ 84 | practice.employees emp\ 85 | ;\ 86 | \ 87 | -- Q. Show % of emp salart relative to dept total sal\ 88 | SELECT\ 89 | emp.last_name,\ 90 | emp.department_id,\ 91 | emp.salary,\ 92 | SUM(emp.SALARY) OVER(PARTITION BY emp.department_id)*100 "Salary TOTAL"\ 93 | from \ 94 | practice.employees emp\ 95 | ;\ 96 | \ 97 | select 2800/2490000; int/int= int\ 98 | float/int = float \ 99 | float/float(numeric)= numeric float \ 100 | \ 101 | SELECT\ 102 | emp.last_name,\ 103 | emp.department_id,\ 104 | emp.salary,\ 105 | (emp.salary::FLOAT/SUM(emp.SALARY) OVER(PARTITION BY emp.department_id))*100 "Salary Pct"\ 106 | from \ 107 | practice.employees emp\ 108 | ;\ 109 | \ 110 | SELECT\ 111 | emp.last_name,\ 112 | emp.department_id,\ 113 | emp.salary,\ 114 | (emp.salary::FLOAT/AVG(emp.SALARY) OVER(PARTITION BY emp.department_id))*100 "Salary Pct of Avg"\ 115 | from \ 116 | practice.employees emp\ 117 | ;\ 118 | \ 119 | -- Q. Display emp info, who was hired next and then so on (dept wise)\ 120 | --LEAD \ 121 | SELECT\ 122 | emp.first_name,\ 123 | emp.email,\ 124 | emp.department_id,\ 125 | emp.hire_date\ 126 | FROM \ 127 | practice.employees emp\ 128 | order by department_id asc, hire_date asc;\ 129 | \ 130 | -- LEAD = NExT \ 131 | -- Lag = Previous \ 132 | \ 133 | SELECT\ 134 | emp.first_name,\ 135 | emp.email,\ 136 | emp.department_id,\ 137 | emp.hire_date,\ 138 | LEAD(emp.first_name) OVER(partition by department_id order by hire_date)\ 139 | FROM \ 140 | practice.employees emp;\ 141 | \ 142 | \ 143 | SELECT\ 144 | emp.first_name,\ 145 | emp.email,\ 146 | emp.department_id,\ 147 | emp.hire_date,\ 148 | LEAD(emp.first_name,2) OVER(partition by department_id order by hire_date) "Next 2nd Hired Person"\ 149 | FROM \ 150 | practice.employees emp;\ 151 | \ 152 | \ 153 | SELECT\ 154 | emp.first_name "First Name",\ 155 | emp.email "Email",\ 156 | emp.department_id "Department",\ 157 | emp.hire_date "Hired at",\ 158 | CASE WHEN \ 159 | LEAD(emp.first_name,2) OVER(partition by department_id order by hire_date) IS NULL \ 160 | THEN 'N/A'\ 161 | ELSE \ 162 | LEAD(emp.first_name,2) OVER(partition by department_id order by hire_date) END \ 163 | AS "Next 2nd Hired Person"\ 164 | FROM \ 165 | practice.employees emp;\ 166 | \ 167 | --LAG\ 168 | \ 169 | SELECT\ 170 | emp.first_name "First Name",\ 171 | emp.email "Email",\ 172 | emp.department_id "Department",\ 173 | emp.hire_date "Hired at",\ 174 | CASE WHEN \ 175 | LAG(emp.first_name,1) OVER(partition by department_id order by hire_date) IS NULL \ 176 | THEN 'N/A'\ 177 | ELSE \ 178 | LAG(emp.first_name,1) OVER(partition by department_id order by hire_date) END \ 179 | AS "Next Previously"\ 180 | FROM \ 181 | practice.employees emp;\ 182 | \ 183 | ---\ 184 | -- Q. for each dept show 1st and last employee hired\ 185 | SELECT\ 186 | emp.first_name,\ 187 | emp.email,\ 188 | emp.department_id,\ 189 | emp.hire_date,\ 190 | FIRST_VALUE(emp.first_name) OVER(partition by department_id order by hire_date) AS "First Hired",\ 191 | LAST_VALUE(emp.first_name) OVER(partition by department_id order by hire_date) AS "Last Hired"\ 192 | FROM \ 193 | practice.employees emp;\ 194 | \ 195 | \ 196 | RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING;\ 197 | \ 198 | \ 199 | SELECT\ 200 | emp.first_name,\ 201 | emp.email,\ 202 | emp.department_id,\ 203 | emp.hire_date,\ 204 | FIRST_VALUE(emp.first_name) OVER(partition by department_id order by hire_date RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS "First Hired",\ 205 | LAST_VALUE(emp.first_name) OVER(partition by department_id order by hire_date RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS "Last Hired"\ 206 | FROM \ 207 | practice.employees emp;\ 208 | \ 209 | \ 210 | --\ 211 | -- Q. DEVIDE INTO NEARLY SAME AMOUNT\ 212 | FRIEND = 3 \ 213 | BUISCUIT = 7\ 214 | \ 215 | F1 | F2 | F3 \ 216 | ------------\ 217 | 1 | 1 | 1 =3 \ 218 | 1 | 1 | 1 =3 \ 219 | 1 \ 220 | --------------\ 221 | 3 | 2 | 2 = 7\ 222 | \ 223 | --NTILE\ 224 | ;SELECT\ 225 | emp.first_name,\ 226 | emp.last_name,\ 227 | emp.salary,\ 228 | emp.department_id,\ 229 | NTILE(3) OVER(PARTITION BY department_id ORDER BY salary) as "Prize"\ 230 | FROm \ 231 | practice.employees emp;\ 232 | \ 233 | --Nth Value\ 234 | -- 2nd higest sal, last 2nd lowest value ......\ 235 | \ 236 | SELECT * from \ 237 | (SELECT\ 238 | emp.first_name,\ 239 | emp.salary\ 240 | from \ 241 | practice.employees emp\ 242 | order by emp.salary desc\ 243 | limit 2) as total_sal_cal\ 244 | order by salary asc \ 245 | limit 1;\ 246 | \ 247 | SELECT\ 248 | emp.first_name,\ 249 | emp.salary\ 250 | from \ 251 | practice.employees emp\ 252 | order by emp.salary desc\ 253 | -- limit 1\ 254 | offset 1\ 255 | ;\ 256 | \ 257 | SELECT\ 258 | emp.first_name,\ 259 | emp.salary\ 260 | from \ 261 | practice.employees emp\ 262 | order by emp.salary desc\ 263 | limit 1\ 264 | offset 1;\ 265 | \ 266 | \ 267 | SELECT\ 268 | emp.first_name,\ 269 | emp.salary,\ 270 | emp.department_id,\ 271 | NTH_VALUE(emp.salary,2) OVER(PARTITION BY emp.department_id order by salary DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)\ 272 | from \ 273 | practice.employees emp;\ 274 | \ 275 | \ 276 | \ 277 | SELECT\ 278 | emp.last_name,\ 279 | emp.department_id,\ 280 | emp.salary,\ 281 | (CUME_DIST() OVER(PARTITION by department_id order by salary))*100 ||'%' as "cumulative diostribution"\ 282 | from \ 283 | practice.employees emp\ 284 | ;\ 285 | \ 286 | \ 287 | } -------------------------------------------------------------------------------- /class17.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2639 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;\f1\fnil\fcharset0 Menlo-Bold;} 3 | {\colortbl;\red255\green255\blue255;\red170\green170\blue170;\red158\green158\blue158;\red115\green158\blue202; 4 | \red238\green204\blue100;\red192\green192\blue192;\red126\green186\blue211;\red102\green151\blue104;\red202\green197\blue128; 5 | } 6 | {\*\expandedcolortbl;;\csgenericrgb\c66667\c66667\c66667;\csgenericrgb\c61961\c61961\c61961;\csgenericrgb\c45098\c61961\c79216; 7 | \csgenericrgb\c93333\c80000\c39216;\csgenericrgb\c75294\c75294\c75294;\csgenericrgb\c49412\c72941\c82745;\csgenericrgb\c40000\c59216\c40784;\csgenericrgb\c79216\c77255\c50196; 8 | } 9 | \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 10 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 11 | 12 | \f0\fs28 \cf0 \ 13 | \pard\pardeftab720\partightenfactor0 14 | \cf2 #\cf3 OPTIMIZATION\cf0 \ 15 | \ 16 | \pard\pardeftab720\partightenfactor0 17 | \cf3 INDEXING\cf0 \ 18 | \pard\pardeftab720\partightenfactor0 19 | \cf2 \cf3 Memory\cf2 , \cf3 COST\cf0 \ 20 | \ 21 | \pard\pardeftab720\partightenfactor0 22 | \cf3 EXPLAIN\cf0 \ 23 | \pard\pardeftab720\partightenfactor0 24 | 25 | \f1\b \cf4 SELECT 26 | \f0\b0 \cf2 \cf3 a\cf2 .*, \cf3 b\cf2 .\cf3 xyz\cf2 , \cf3 c\cf2 .\cf3 abc\cf2 \cf0 \ 27 | \pard\pardeftab720\partightenfactor0 28 | \cf3 A\cf0 \ 29 | \pard\pardeftab720\partightenfactor0 30 | 31 | \f1\b \cf4 JOIN 32 | \f0\b0 \cf0 \ 33 | \pard\pardeftab720\partightenfactor0 34 | \cf3 B\cf2 35 | \f1\b \cf4 ON 36 | \f0\b0 \cf2 \cf3 a\cf2 .\cf3 abc\cf2 =\cf3 b\cf2 .\cf3 abc\cf0 \ 37 | \pard\pardeftab720\partightenfactor0 38 | 39 | \f1\b \cf4 JOIN 40 | \f0\b0 \cf0 \ 41 | \pard\pardeftab720\partightenfactor0 42 | \cf3 C\cf2 43 | \f1\b \cf4 ON 44 | \f0\b0 \cf2 \cf3 b\cf2 .\cf3 xyz\cf2 =\cf3 c\cf2 .\cf3 xyz\cf5 ;\cf0 \ 45 | \ 46 | \ 47 | \cf3 EXPLAIN\cf2 (\cf3 ANALYZE\cf2 )\cf0 \ 48 | \pard\pardeftab720\partightenfactor0 49 | 50 | \f1\b \cf4 SELECT 51 | \f0\b0 \cf2 \cf3 a\cf2 .*, \cf3 b\cf2 .\cf3 xyz\cf2 , \cf3 c\cf2 .\cf3 abc\cf2 \cf0 \ 52 | \pard\pardeftab720\partightenfactor0 53 | \cf3 A\cf2 ,\cf0 \ 54 | \cf3 B\cf2 ,\cf0 \ 55 | \cf3 C\cf2 \cf0 \ 56 | \pard\pardeftab720\partightenfactor0 57 | 58 | \f1\b \cf4 WHERE 59 | \f0\b0 \cf2 \cf0 \ 60 | \pard\pardeftab720\partightenfactor0 61 | \cf3 a\cf2 .\cf3 abc\cf2 =\cf3 b\cf2 .\cf3 abc\cf0 \ 62 | \pard\pardeftab720\partightenfactor0 63 | 64 | \f1\b \cf4 AND 65 | \f0\b0 \cf2 \cf0 \ 66 | \pard\pardeftab720\partightenfactor0 67 | \cf3 b\cf2 .\cf3 xyz\cf2 =\cf3 c\cf2 .\cf3 xyz\cf5 ;\cf0 \ 68 | \ 69 | \ 70 | \cf3 EXPLAIN\cf2 (\cf3 ANALYZE\cf2 , \cf3 BUFFER\cf2 )\cf0 \ 71 | \pard\pardeftab720\partightenfactor0 72 | 73 | \f1\b \cf4 SELECT 74 | \f0\b0 \cf2 \cf3 a\cf2 .*, \cf3 b\cf2 .\cf3 xyz\cf2 , \cf3 c\cf2 .\cf3 abc\cf2 \cf0 \ 75 | \pard\pardeftab720\partightenfactor0 76 | \cf3 A\cf0 \ 77 | \pard\pardeftab720\partightenfactor0 78 | 79 | \f1\b \cf4 JOIN 80 | \f0\b0 \cf0 \ 81 | \pard\pardeftab720\partightenfactor0 82 | \cf3 B\cf2 83 | \f1\b \cf4 ON 84 | \f0\b0 \cf2 \cf3 a\cf2 .\cf3 abc\cf2 =\cf3 b\cf2 .\cf3 abc\cf0 \ 85 | \pard\pardeftab720\partightenfactor0 86 | 87 | \f1\b \cf4 JOIN 88 | \f0\b0 \cf0 \ 89 | \pard\pardeftab720\partightenfactor0 90 | \cf3 C\cf2 91 | \f1\b \cf4 ON 92 | \f0\b0 \cf2 \cf3 b\cf2 .\cf3 xyz\cf2 =\cf3 c\cf2 .\cf3 xyz\cf5 ;\cf0 \ 93 | \ 94 | \pard\pardeftab720\partightenfactor0 95 | \cf2 (\cf3 cost\cf2 :\cf6 98689698.89\cf2 , 96 | \f1\b \cf4 ROWS 97 | \f0\b0 \cf2 :987987..) (\cf3 actual\cf2 98 | \f1\b \cf4 time 99 | \f0\b0 \cf2 =\cf6 786.89\cf2 100 | \f1\b \cf4 ROWS 101 | \f0\b0 \cf2 =\cf6 19\cf3 o87\cf2 , \cf3 loops\cf2 =\cf6 98\cf2 )\cf0 \ 102 | \ 103 | \cf2 => 104 | \f1\b \cf4 JOIN 105 | \f0\b0 \cf2 \cf3 A\cf2 & \cf3 B\cf2 =\cf6 897987\cf0 \ 106 | \cf2 => \cf3 loops\cf0 \ 107 | \cf2 => \cf3 cost\cf0 \ 108 | \cf2 =>\cf3 jkhgiojhiu\cf0 \ 109 | \ 110 | \pard\pardeftab720\partightenfactor0 111 | 112 | \f1\b \cf4 INDEX 113 | \f0\b0 \cf0 \ 114 | \pard\pardeftab720\partightenfactor0 115 | \cf2 \cf3 CLUSTERED\cf2 (\cf3 Auto\cf2 \cf3 created\cf2 116 | \f1\b \cf4 ON 117 | \f0\b0 \cf2 118 | \f1\b \cf4 PRIMARY 119 | \f0\b0 \cf2 120 | \f1\b \cf4 KEY 121 | \f0\b0 \cf2 \cf3 creation\cf2 )\cf0 \ 122 | \cf2 \cf0 \ 123 | \cf2 \cf3 NON\cf2 \cf3 CLUSTERED\cf0 \ 124 | \cf2 125 | \f1\b \cf4 CREATE 126 | \f0\b0 \cf2 127 | \f1\b \cf4 INDEX 128 | \f0\b0 \cf2 \cf3 consumer_address_idx\cf2 129 | \f1\b \cf4 ON 130 | \f0\b0 \cf2 \cf3 consumer\cf2 (\cf3 adress\cf2 ) \cf5 ;\cf0 \ 131 | \cf2 \cf0 \ 132 | \pard\pardeftab720\partightenfactor0 133 | 134 | \f1\b \cf4 BINARY 135 | \f0\b0 \cf2 /\cf3 BTREE\cf0 \ 136 | \pard\pardeftab720\partightenfactor0 137 | \cf3 HASH\cf0 \ 138 | \cf3 GIN\cf2 (\cf3 generalized\cf2 ...) [ 139 | \f1\b \cf4 ARRAY 140 | \f0\b0 \cf2 141 | \f1\b \cf4 SEARCH 142 | \f0\b0 \cf2 . 143 | \f1\b \cf4 FULL 144 | \f0\b0 \cf2 \cf3 text\cf2 145 | \f1\b \cf4 search 146 | \f0\b0 \cf2 ]\cf0 \ 147 | \cf3 GiST\cf2 (\cf3 Geo\cf2 /\cf3 point\cf2 )\cf0 \ 148 | \cf3 BRIN\cf2 (\cf3 Blovck\cf2 149 | \f1\b \cf4 RANGE 150 | \f0\b0 \cf2 151 | \f1\b \cf4 index 152 | \f0\b0 \cf2 )\cf0 \ 153 | \cf3 Sp\cf2 -\cf3 Gist\cf2 [ 154 | \f1\b \cf4 SPACE 155 | \f0\b0 \cf2 \cf3 Partitioning\cf2 ]\cf0 \ 156 | \ 157 | \pard\pardeftab720\partightenfactor0 158 | \cf6 1\cf2 ,\cf6 2\cf2 ,\cf6 3\cf2 ,\cf6 4\cf2 ,\cf6 5\cf2 ,\cf6 6\cf2 ,\cf6 7\cf2 ,\cf6 8\cf2 ,\cf6 9\cf2 ,\cf6 10\cf0 \ 159 | \pard\pardeftab720\partightenfactor0 160 | 161 | \f1\b \cf4 WHERE 162 | \f0\b0 \cf2 163 | \f1\b \cf4 IS 164 | \f0\b0 \cf2 \cf6 9\cf2 165 | \f1\b \cf7 ? 166 | \f0\b0 \cf0 \ 167 | \pard\pardeftab720\partightenfactor0 168 | \cf3 middle\cf2 = \cf6 5\cf0 \ 169 | \pard\pardeftab720\partightenfactor0 170 | \cf2 171 | \f1\b \cf4 IS 172 | \f0\b0 \cf2 \cf6 9\cf2 \cf3 less\cf2 \cf3 than\cf2 \cf6 5\cf2 ? 173 | \f1\b \cf4 NO 174 | \f0\b0 \cf0 \ 175 | \cf2 \cf3 Skip\cf2 <\cf6 5\cf2 [\cf6 1\cf2 ,\cf6 2\cf2 ,\cf6 3\cf2 ,\cf6 4\cf2 ,\cf6 5\cf2 ,]\cf0 \ 176 | \pard\pardeftab720\partightenfactor0 177 | 178 | \f1\b \cf4 SEARCH 179 | \f0\b0 \cf2 \cf3 INSIDE\cf2 \cf6 6\cf2 ,\cf6 7\cf2 ,\cf6 8\cf2 ,\cf6 9\cf2 ,\cf6 10\cf0 \ 180 | \pard\pardeftab720\partightenfactor0 181 | \cf3 middle\cf2 ? \cf6 8\cf0 \ 182 | \pard\pardeftab720\partightenfactor0 183 | \cf2 184 | \f1\b \cf4 IS 185 | \f0\b0 \cf2 \cf6 9\cf2 \cf3 less\cf2 \cf3 than\cf2 \cf6 8\cf2 ? 186 | \f1\b \cf4 NO 187 | \f0\b0 \cf2 \cf3 skipp\cf2 \cf6 6\cf2 ,\cf6 7\cf2 ,\cf6 8\cf0 \ 188 | \cf2 189 | \f1\b \cf4 SEARCH 190 | \f0\b0 \cf2 191 | \f1\b \cf4 BETWEEN 192 | \f0\b0 \cf2 \cf6 9\cf2 ,\cf6 10\cf0 \ 193 | \cf2 \cf6 9\cf2 194 | \f1\b \cf4 IS 195 | \f0\b0 \cf2 \cf3 here\cf0 \ 196 | \ 197 | \cf2 \cf0 \ 198 | \pard\pardeftab720\partightenfactor0 199 | \cf6 1\cf2 ,\cf6 2\cf2 ,\cf6 3\cf2 ,\cf6 4\cf2 ,\cf6 5\cf2 ,\cf6 6\cf2 ,\cf6 7\cf2 ,\cf6 8\cf2 ,\cf6 9\cf2 ,\cf6 10\cf0 \ 200 | \ 201 | \cf6 1\cf2 -\cf6 3\cf2 \cf0 \ 202 | \cf6 1\cf0 \ 203 | \cf6 2\cf0 \ 204 | \cf6 3\cf0 \ 205 | \ 206 | \ 207 | \ 208 | \cf6 4\cf2 -\cf6 6\cf0 \ 209 | \cf6 4\cf0 \ 210 | \cf6 5\cf0 \ 211 | \cf6 6\cf0 \ 212 | \ 213 | \cf6 7\cf2 -\cf6 9\cf0 \ 214 | \cf6 7\cf0 \ 215 | \cf6 8\cf0 \ 216 | \cf6 9\cf0 \ 217 | \ 218 | \ 219 | \cf6 10\cf0 \ 220 | \cf6 10\cf0 \ 221 | \pard\pardeftab720\partightenfactor0 222 | \cf2 ...\cf0 \ 223 | \ 224 | \ 225 | \ 226 | \pard\pardeftab720\partightenfactor0 227 | \cf3 WHRE\cf2 228 | \f1\b \cf4 IS 229 | \f0\b0 \cf2 \cf6 9\cf2 ?\cf0 \ 230 | \pard\pardeftab720\partightenfactor0 231 | \cf6 3\cf3 rd\cf2 \cf3 block\cf0 \ 232 | \ 233 | \ 234 | \ 235 | \pard\pardeftab720\partightenfactor0 236 | \cf2 237 | \f1\b \cf4 CREATE 238 | \f0\b0 \cf2 239 | \f1\b \cf4 INDEX 240 | \f0\b0 \cf2 \cf3 consumer_address_idx\cf2 241 | \f1\b \cf4 ON 242 | \f0\b0 \cf2 243 | \f1\b \cf4 USING 244 | \f0\b0 \cf2 \cf3 BTREE\cf2 \cf3 consumer\cf2 (\cf3 adress\cf2 ) \cf5 ;\cf0 \ 245 | \cf2 246 | \f1\b \cf4 CREATE 247 | \f0\b0 \cf2 248 | \f1\b \cf4 INDEX 249 | \f0\b0 \cf2 \cf3 consumer_address_idx\cf2 250 | \f1\b \cf4 ON 251 | \f0\b0 \cf2 252 | \f1\b \cf4 USING 253 | \f0\b0 \cf2 \cf3 BRIN\cf2 \cf3 consumer\cf2 (\cf3 adress\cf2 ) \cf5 ;\cf0 \ 254 | \ 255 | \ 256 | \ 257 | \ 258 | \cf2 ######\cf0 \ 259 | \pard\pardeftab720\partightenfactor0 260 | \cf3 GP\cf0 \ 261 | \cf3 ROBI\cf0 \ 262 | \cf3 BL\cf0 \ 263 | \cf3 TT\cf0 \ 264 | \ 265 | \cf3 SSL\cf2 \cf3 WIRELESS\cf0 \ 266 | \ 267 | \ 268 | \cf3 LIST\cf2 269 | \f1\b \cf4 PARTITION 270 | \f0\b0 \cf0 \ 271 | \pard\pardeftab720\partightenfactor0 272 | 273 | \f1\b \cf4 RANGE 274 | \f0\b0 \cf0 \ 275 | \pard\pardeftab720\partightenfactor0 276 | \cf3 HASH\cf0 \ 277 | \ 278 | \pard\pardeftab720\partightenfactor0 279 | 280 | \f1\b \cf4 CREATE 281 | \f0\b0 \cf2 282 | \f1\b \cf4 TABLE 283 | \f0\b0 \cf2 \cf3 consumer\cf2 (\cf0 \ 284 | \pard\pardeftab720\partightenfactor0 285 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 286 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 287 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 288 | \cf3 is_active\cf2 \cf3 bool\cf0 \ 289 | \pard\pardeftab720\partightenfactor0 290 | \cf2 )\cf0 \ 291 | \pard\pardeftab720\partightenfactor0 292 | 293 | \f1\b \cf4 PARTITION 294 | \f0\b0 \cf2 295 | \f1\b \cf4 BY 296 | \f0\b0 \cf2 \cf3 LIST\cf2 (\cf3 is_active\cf2 )\cf5 ;\cf0 \ 297 | \ 298 | \ 299 | 300 | \f1\b \cf4 CREATE 301 | \f0\b0 \cf2 302 | \f1\b \cf4 TABLE 303 | \f0\b0 \cf2 \cf3 default_consumer\cf2 (\cf0 \ 304 | \pard\pardeftab720\partightenfactor0 305 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 306 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 307 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 308 | \cf3 is_active\cf2 \cf3 bool\cf0 \ 309 | \pard\pardeftab720\partightenfactor0 310 | \cf2 )\cf0 \ 311 | \pard\pardeftab720\partightenfactor0 312 | 313 | \f1\b \cf4 PARTITION 314 | \f0\b0 \cf2 315 | \f1\b \cf4 OF 316 | \f0\b0 \cf2 \cf3 consumer\cf2 317 | \f1\b \cf4 DEFAULT 318 | \f0\b0 \cf5 ;\cf0 \ 319 | \ 320 | \ 321 | 322 | \f1\b \cf4 CREATE 323 | \f0\b0 \cf2 324 | \f1\b \cf4 TABLE 325 | \f0\b0 \cf2 \cf3 active_consumer\cf2 (\cf0 \ 326 | \pard\pardeftab720\partightenfactor0 327 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 328 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 329 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 330 | \cf3 is_active\cf2 \cf3 bool\cf0 \ 331 | \pard\pardeftab720\partightenfactor0 332 | \cf2 )\cf0 \ 333 | \pard\pardeftab720\partightenfactor0 334 | 335 | \f1\b \cf4 PARTITION 336 | \f0\b0 \cf2 337 | \f1\b \cf4 OF 338 | \f0\b0 \cf2 \cf3 consumer\cf2 339 | \f1\b \cf4 FOR 340 | \f0\b0 \cf2 341 | \f1\b \cf4 VALUES 342 | \f0\b0 \cf2 343 | \f1\b \cf4 IN 344 | \f0\b0 \cf2 ( 345 | \f1\b \cf4 true 346 | \f0\b0 \cf2 )\cf5 ;\cf0 \ 347 | \ 348 | \ 349 | 350 | \f1\b \cf4 CREATE 351 | \f0\b0 \cf2 352 | \f1\b \cf4 TABLE 353 | \f0\b0 \cf2 \cf3 false_consumer\cf2 (\cf0 \ 354 | \pard\pardeftab720\partightenfactor0 355 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 356 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 357 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 358 | \cf3 is_active\cf2 \cf3 bool\cf0 \ 359 | \pard\pardeftab720\partightenfactor0 360 | \cf2 )\cf0 \ 361 | \pard\pardeftab720\partightenfactor0 362 | 363 | \f1\b \cf4 PARTITION 364 | \f0\b0 \cf2 365 | \f1\b \cf4 OF 366 | \f0\b0 \cf2 \cf3 consumer\cf2 367 | \f1\b \cf4 FOR 368 | \f0\b0 \cf2 369 | \f1\b \cf4 VALUES 370 | \f0\b0 \cf2 371 | \f1\b \cf4 IN 372 | \f0\b0 \cf2 ( 373 | \f1\b \cf4 false 374 | \f0\b0 \cf2 )\cf5 ;\cf0 \ 375 | \ 376 | \ 377 | \ 378 | 379 | \f1\b \cf4 INSERT 380 | \f0\b0 \cf2 381 | \f1\b \cf4 INTO 382 | \f0\b0 \cf2 .....\cf0 \ 383 | \ 384 | \ 385 | \ 386 | \pard\pardeftab720\partightenfactor0 387 | \cf8 --##RANGE\cf0 \ 388 | \ 389 | \ 390 | \pard\pardeftab720\partightenfactor0 391 | 392 | \f1\b \cf4 CREATE 393 | \f0\b0 \cf2 394 | \f1\b \cf4 TABLE 395 | \f0\b0 \cf2 \cf3 consumer\cf2 (\cf0 \ 396 | \pard\pardeftab720\partightenfactor0 397 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 398 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 399 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 400 | \cf3 is_active\cf2 \cf3 bool\cf2 ,\cf0 \ 401 | \cf3 created_at\cf2 402 | \f1\b \cf4 date 403 | \f0\b0 \cf0 \ 404 | \pard\pardeftab720\partightenfactor0 405 | \cf2 )\cf0 \ 406 | \pard\pardeftab720\partightenfactor0 407 | 408 | \f1\b \cf4 PARTITION 409 | \f0\b0 \cf2 410 | \f1\b \cf4 BY 411 | \f0\b0 \cf2 412 | \f1\b \cf4 RANGE 413 | \f0\b0 \cf2 (\cf3 created_at\cf2 )\cf5 ;\cf0 \ 414 | \ 415 | \ 416 | \ 417 | 418 | \f1\b \cf4 CREATE 419 | \f0\b0 \cf2 420 | \f1\b \cf4 TABLE 421 | \f0\b0 \cf2 \cf3 consumers_20230106\cf2 (\cf0 \ 422 | \pard\pardeftab720\partightenfactor0 423 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 424 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 425 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 426 | \cf3 is_active\cf2 \cf3 bool\cf2 ,\cf0 \ 427 | \cf3 created_at\cf2 428 | \f1\b \cf4 date 429 | \f0\b0 \cf0 \ 430 | \pard\pardeftab720\partightenfactor0 431 | \cf2 )\cf0 \ 432 | \pard\pardeftab720\partightenfactor0 433 | 434 | \f1\b \cf4 PARTITION 435 | \f0\b0 \cf2 436 | \f1\b \cf4 OF 437 | \f0\b0 \cf2 \cf3 consumer\cf2 438 | \f1\b \cf4 FROM 439 | \f0\b0 \cf2 \cf9 '2023-01-01'\cf2 440 | \f1\b \cf4 TO 441 | \f0\b0 \cf2 \cf9 '2023-06-30'\cf5 ;\cf0 \ 442 | \ 443 | \ 444 | \ 445 | \ 446 | 447 | \f1\b \cf4 CREATE 448 | \f0\b0 \cf2 449 | \f1\b \cf4 TABLE 450 | \f0\b0 \cf2 \cf3 consumers_20230712\cf2 (\cf0 \ 451 | \pard\pardeftab720\partightenfactor0 452 | \cf3 id\cf2 \cf3 serial\cf2 ,\cf0 \ 453 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 454 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 455 | \cf3 is_active\cf2 \cf3 bool\cf2 ,\cf0 \ 456 | \cf3 created_at\cf2 457 | \f1\b \cf4 date 458 | \f0\b0 \cf0 \ 459 | \pard\pardeftab720\partightenfactor0 460 | \cf2 )\cf0 \ 461 | \pard\pardeftab720\partightenfactor0 462 | 463 | \f1\b \cf4 PARTITION 464 | \f0\b0 \cf2 465 | \f1\b \cf4 OF 466 | \f0\b0 \cf2 \cf3 consumer\cf2 467 | \f1\b \cf4 FROM 468 | \f0\b0 \cf2 \cf9 '2023-07-01'\cf2 469 | \f1\b \cf4 TO 470 | \f0\b0 \cf2 \cf9 '2023-12-31'\cf5 ;\cf0 \ 471 | \ 472 | \ 473 | \ 474 | \ 475 | \ 476 | \ 477 | 478 | \f1\b \cf4 CREATE 479 | \f0\b0 \cf2 480 | \f1\b \cf4 TABLE 481 | \f0\b0 \cf2 \cf3 consumers_default\cf2 (\cf0 \ 482 | \pard\pardeftab720\partightenfactor0 483 | \cf3 name\cf2 \cf3 text\cf2 ,\cf0 \ 484 | \cf3 phone_num\cf2 \cf3 int8\cf2 ,\cf0 \ 485 | \cf3 is_active\cf2 \cf3 bool\cf2 ,\cf0 \ 486 | \cf3 created_at\cf2 487 | \f1\b \cf4 date 488 | \f0\b0 \cf0 \ 489 | \pard\pardeftab720\partightenfactor0 490 | \cf2 )\cf0 \ 491 | \pard\pardeftab720\partightenfactor0 492 | 493 | \f1\b \cf4 PARTITION 494 | \f0\b0 \cf2 495 | \f1\b \cf4 OF 496 | \f0\b0 \cf2 \cf3 consumer\cf2 497 | \f1\b \cf4 DEFAULT 498 | \f0\b0 \cf5 ;\cf0 \ 499 | \ 500 | \ 501 | \ 502 | \ 503 | \ 504 | \ 505 | \ 506 | \ 507 | \ 508 | \ 509 | \ 510 | \ 511 | \ 512 | \ 513 | \ 514 | \ 515 | \ 516 | \ 517 | } -------------------------------------------------------------------------------- /department_202310082106.csv: -------------------------------------------------------------------------------- 1 | "dept_no"|"dept_name" 2 | d001|Marketing 3 | d002|Finance 4 | d003|Human Resources 5 | d004|Production 6 | d005|Development 7 | d006|Quality Management 8 | d007|Sales 9 | d008|Research 10 | d009|Customer Service 11 | -------------------------------------------------------------------------------- /employees_dump.csv: -------------------------------------------------------------------------------- 1 | employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id,change_time,bonus 2 | 109,Daniel,Faviet,DFAVIET,1840754917,1900-01-00,FI_ACCOUNT,9000,,108,100,,1620 3 | 108,Nancy,Greenberg,NGREENBE,1852290388,1900-01-00,FI_MGR,12000,,101,100,,0 4 | 110,John,Chen,JCHEN,1833528026,1900-01-00,FI_ACCOUNT,8200,,108,100,,1476 5 | 115,Alexander,Khoo,AKHOO,1584164544,1900-01-00,PU_CLERK,3100,,114,30,,558 6 | 116,Shelli,Baida,SBAIDA,1893731132,1900-01-00,PU_CLERK,2900,,114,30,,522 7 | 118,Guy,Himuro,GHIMURO,1732267200,1900-01-00,PU_CLERK,2600,,114,30,,468 8 | 119,Karen,Colmenares,KCOLMENA,1897357570,1900-01-00,PU_CLERK,2500,,114,30,,450 9 | 120,Matthew,Weiss,MWEISS,1632647003,1900-01-00,ST_MAN,8000,,100,50,,1440 10 | 122,Payam,Kaufling,PKAUFLIN,1623114724,1900-01-00,ST_MAN,7900,,100,50,,1422 11 | 123,Shanta,Vollman,SVOLLMAN,1625658294,1900-01-00,ST_MAN,6500,,100,50,,1170 12 | 126,Irene,Mikkilineni,IMIKKILI,1529374263,1900-01-00,ST_CLERK,2700,,120,50,,486 13 | 127,James,Landry,JLANDRY,1601860078,1900-01-00,ST_CLERK,2400,,120,50,,432 14 | 128,Steven,Markle,SMARKLE,1734441511,1900-01-00,ST_CLERK,2200,,120,50,,396 15 | 129,Laura,Bissot,LBISSOT,1670175155,1900-01-00,ST_CLERK,3300,,121,50,,594 16 | 130,Mozhe,Atkinson,MATKINSO,1597349503,1900-01-00,ST_CLERK,2800,,121,50,,504 17 | 131,James,Marlow,JAMRLOW,1663737526,1900-01-00,ST_CLERK,2500,,121,50,,450 18 | 132,TJ,Olson,TJOLSON,1551609888,1900-01-00,ST_CLERK,2100,,121,50,,378 19 | 133,Jason,Mallin,JMALLIN,1557032233,1900-01-00,ST_CLERK,3300,,122,50,,594 20 | 134,Michael,Rogers,MROGERS,1888433284,1900-01-00,ST_CLERK,2900,,122,50,,522 21 | 135,Ki,Gee,KGEE,1820298410,1900-01-00,ST_CLERK,2400,,122,50,,432 22 | 136,Hazel,Philtanker,HPHILTAN,1570419549,1900-01-00,ST_CLERK,2200,,122,50,,396 23 | 137,Renske,Ladwig,RLADWIG,1759936333,1900-01-00,ST_CLERK,3600,,123,50,,648 24 | 138,Stephen,Stiles,SSTILES,1897118299,1900-01-00,ST_CLERK,3200,,123,50,,576 25 | 139,John,Seo,JSEO,1632895425,1900-01-00,ST_CLERK,2700,,123,50,,486 26 | 140,Joshua,Patel,JPATEL,1789778970,1900-01-00,ST_CLERK,2500,,123,50,,450 27 | 141,Trenna,Rajs,TRAJS,1610247826,1900-01-00,ST_CLERK,3500,,124,50,,630 28 | 142,Curtis,Davies,CDAVIES,1910422646,1900-01-00,ST_CLERK,3100,,124,50,,558 29 | 143,Randall,Matos,RMATOS,1755407167,1900-01-00,ST_CLERK,2600,,124,50,,468 30 | 144,Peter,Vargas,PVARGAS,1762529731,1900-01-00,ST_CLERK,2500,,124,50,,450 31 | 145,John,Russell,JRUSSEL,1767362572,1900-01-00,SA_MAN,14000,0.4,100,80,,2520 32 | 146,Karen,Partners,KPARTNER,1588853367,1900-01-00,SA_MAN,13500,0.3,100,80,,2430 33 | 148,Gerald,Cambrault,GCAMBRAU,1765693216,1900-01-00,SA_MAN,11000,0.3,100,80,,1980 34 | 149,Eleni,Zlotkey,EZLOTKEY,1697352169,1900-01-00,SA_MAN,10500,0.2,100,80,,1890 35 | 150,Peter,Tucker,PTUCKER,1856900953,1900-01-00,SA_REP,10000,0.3,145,80,,1800 36 | 151,David,Bernstein,DBERNSTE,1563882694,1900-01-00,SA_REP,9500,0.25,145,80,,1710 37 | 152,Peter,Hall,PHALL,1746205374,1900-01-00,SA_REP,9000,0.25,145,80,,1620 38 | 153,Christopher,Olsen,COLSEN,1732400899,1900-01-00,SA_REP,8000,0.2,145,80,,1440 39 | 154,Nanette,Cambrault,NCAMBRAU,1704317730,1900-01-00,SA_REP,7500,0.2,145,80,,1350 40 | 114,Den,Raphaely,DRAPHEAL,1704231554,1900-01-00,PU_MAN,11000,,100,30,, 41 | 124,Kevin,Mourgos,KMOURGOS,1913679702,1900-01-00,ST_MAN,5800,,100,50,,0 42 | 121,Adam,Fripp,AFRIPP,1800613121,1900-01-00,ST_MAN,8200,,100,50,, 43 | 117,Sigal,Tobias,STOBIAS,1721072576,1900-01-00,PU_CLERK,2800,,114,30,, 44 | 155,Oliver,Tuvault,OTUVAULT,1724122818,1900-01-00,SA_REP,7000,0.15,145,80,,1260 45 | 156,Janette,King,JKING,1625587368,1900-01-00,SA_REP,10000,0.35,146,80,,1800 46 | 157,Patrick,Sully,PSULLY,1720043389,1900-01-00,SA_REP,9500,0.35,146,80,,1710 47 | 158,Allan,McEwen,AMCEWEN,1854418891,1900-01-00,SA_REP,9000,0.35,146,80,,1620 48 | 159,Lindsey,Smith,LSMITH,1565515877,1900-01-00,SA_REP,8000,0.3,146,80,,1440 49 | 160,Louise,Doran,LDORAN,1724111589,1900-01-00,SA_REP,7500,0.3,146,80,,1350 50 | 161,Sarath,Sewall,SSEWALL,1830224622,1900-01-00,SA_REP,7000,0.25,146,80,,1260 51 | 162,Clara,Vishney,CVISHNEY,1606234066,1900-01-00,SA_REP,10500,0.25,147,80,,1890 52 | 163,Danielle,Greene,DGREENE,1562178238,1900-01-00,SA_REP,9500,0.15,147,80,,1710 53 | 164,Mattea,Marvins,MMARVINS,1596492970,1900-01-00,SA_REP,7200,0.1,147,80,,1296 54 | 165,David,Lee,DLEE,1566388409,1900-01-00,SA_REP,6800,0.1,147,80,,1224 55 | 166,Sundar,Ande,SANDE,1755162292,1900-01-00,SA_REP,6400,0.1,147,80,,1152 56 | 167,Amit,Banda,ABANDA,1544480768,1900-01-00,SA_REP,6200,0.1,147,80,,1116 57 | 168,Lisa,Ozer,LOZER,1664995321,1900-01-00,SA_REP,11500,0.25,148,80,,2070 58 | 169,Harrison,Bloom,HBLOOM,1664323688,1900-01-00,SA_REP,10000,0.2,148,80,,1800 59 | 170,Tayler,Fox,TFOX,1555872191,1900-01-00,SA_REP,9600,0.2,148,80,,1728 60 | 171,William,Smith,WSMITH,1902761106,1900-01-00,SA_REP,7400,0.15,148,80,,1332 61 | 113,LuisJulia,Popp,LPOPP,1697204047,1900-01-00,FI_ACCOUNT,6900,,108,100,,1242 62 | 125,Julia,Nayer,abc@xy,1724851545,1900-01-00,ST_CLERK,3200,,120,50,,576 63 | 147,Alberto,Errazuriz,AERRAZUR@hotmail.com,1710775428,1900-01-00,SA_MAN,12000,0.3,100,80,,2160 64 | 100,Steven,King,SKING@outlook.com,1813593285,1900-01-00,AD_PRES,24000,,,90,,4320 65 | 101,sp works!,Kochhar,NKOCHHAR,1810068944,1900-01-00,AD_VP,17000,,101,90,,3060 66 | 102,Lex Changed!,De Haan,LDEHAAN,1797165723,1900-01-00,AD_VP,17000,,100,90,,3060 67 | 172,Elizabeth,Bates,EBATES,1687163906,1900-01-00,SA_REP,7300,0.15,148,80,,1314 68 | 173,Sundita,Kumar,SKUMAR,1704144735,1900-01-00,SA_REP,6100,0.1,148,80,,1098 69 | 174,Ellen,Abel,EABEL,1822012029,1900-01-00,SA_REP,11000,0.3,149,80,,1980 70 | 175,Alyssa,Hutton,AHUTTON,1875250892,1900-01-00,SA_REP,8800,0.25,149,80,,1584 71 | 176,Jonathon,Taylor,JTAYLOR,1672668381,1900-01-00,SA_REP,8600,0.2,149,80,,1548 72 | 177,Jack,Livingston,JLIVINGS,1603207397,1900-01-00,SA_REP,8400,0.2,149,80,,1512 73 | 178,Kimberely,Grant,KGRANT,1743557234,1900-01-00,SA_REP,7000,0.15,149,,,1260 74 | 179,Charles,Johnson,CJOHNSON,1830027396,1900-01-00,SA_REP,6200,0.1,149,80,,1116 75 | 180,Winston,Taylor,WTAYLOR,1604043654,1900-01-00,SH_CLERK,3200,,120,50,,576 76 | 181,Jean,Fleaur,JFLEAUR,1899501099,1900-01-00,SH_CLERK,3100,,120,50,,558 77 | 182,Martha,Sullivan,MSULLIVA,1739742867,1900-01-00,SH_CLERK,2500,,120,50,,450 78 | 183,Girard,Geoni,GGEONI,1798499215,1900-01-00,SH_CLERK,2800,,120,50,,504 79 | 184,Nandita,Sarchand,NSARCHAN,1767263452,1900-01-00,SH_CLERK,4200,,121,50,,756 80 | 185,Alexis,Bull,ABULL,1690659039,1900-01-00,SH_CLERK,4100,,121,50,,738 81 | 188,Kelly,Chung,KCHUNG,1710806694,1900-01-00,SH_CLERK,3800,,122,50,,684 82 | 189,Jennifer,Dilly,JDILLY,1730740164,1900-01-00,SH_CLERK,3600,,122,50,,648 83 | 190,Timothy,Gates,TGATES,1568660939,1900-01-00,SH_CLERK,2900,,122,50,,522 84 | 191,Randall,Perkins,RPERKINS,1640742272,1900-01-00,SH_CLERK,2500,,122,50,,450 85 | 192,Sarah,Bell,SBELL,1891427940,1900-01-00,SH_CLERK,4000,,123,50,,720 86 | 193,Britney,Everett,BEVERETT,1639842123,1900-01-00,SH_CLERK,3900,,123,50,,702 87 | 194,Samuel,McCain,SMCCAIN,1687005788,1900-01-00,SH_CLERK,3200,,123,50,,576 88 | 195,Vance,Jones,VJONES,1643638732,1900-01-00,SH_CLERK,2800,,123,50,,504 89 | 196,Alana,Walsh,AWALSH,1830528365,1900-01-00,SH_CLERK,3100,,124,50,,558 90 | 197,Kevin,Feeney,KFEENEY,1833319698,1900-01-00,SH_CLERK,3000,,124,50,,540 91 | 198,Donald,OConnell,DOCONNEL,1664355543,1900-01-00,SH_CLERK,2600,,124,50,,468 92 | 199,Douglas,Grant,DGRANT,1619307338,1900-01-00,SH_CLERK,2600,,124,50,,468 93 | 202,Pat,Fay,PFAY,1734044091,1900-01-00,MK_REP,6000,,201,20,,1080 94 | 203,Susan,Mavris,SMAVRIS,1531737286,1900-01-00,HR_REP,6500,,101,40,,1170 95 | 204,Hermann,Baer,HBAER,1741823304,1900-01-00,PR_REP,10000,,101,70,,1800 96 | 1,changed,Dellinger,ghcjhvh@xyz1,1822750644,1900-01-00,SH_CLERK,5400,,121,50,2022-07-03 22:30:18.692 +0600,972 97 | 186,Julia,Dellinger,ghcjhvh@xyz1234,1589096739,1900-01-00,SH_CLERK,3400,,121,50,,612 98 | 2,Julia,Dellinger,ghcjhvh@xyz2,1821502358,1900-01-00,SH_CLERK,3400,,121,50,,612 99 | 187,Anthony,Cabrio,ACABRIO@gmail.com,1882466270,1900-01-00,SH_CLERK,3000,,121,50,,540 100 | 206,William,,WGIETZ@yahoo.com,1651292924,1900-01-00,AC_ACCOUNT,8300,,205,110,,1494 101 | 205,Shelley,Higgins,SHIGGINS@gmail.com,1788678705,1900-01-00,AC_MGR,12000,,101,110,,2160 102 | 200,Jennifer,Whalen,JWHALEN@yahoo.com,1545484030,1900-01-00,AD_ASST,4400,,101,10,,792 103 | 201,Michael,Hartstein,MHARTSTE,1881919238,1900-01-00,MK_MAN,13000,,100,,,2340 104 | 103,Alexander,Hunold,AHUNOLD,1540763659,1900-01-00,IT_PROG,32000,,102,60,2022-07-03 22:32:07.740 +0600,5760 105 | 104,Bruce,Ernst,BERNST,1538047558,1900-01-00,IT_PROG,29000,,103,60,2022-07-03 22:32:07.740 +0600,5220 106 | 105,David,Austin,DAUSTIN,1815406133,1900-01-00,IT_PROG,27800,,103,60,2022-07-03 22:32:07.740 +0600,5004 107 | 106,Valli,Pataballa,VPATABAL,1614893306,1900-01-00,IT_PROG,27800,,103,60,2022-07-03 22:32:07.740 +0600,5004 108 | 107,Julilulia Diana,Lorentz,DLORENTZ,1649921201,1900-01-00,IT_PROG,27200,,103,60,2022-07-03 22:32:07.740 +0600,4896 109 | 111,Ismael,Sciarra,ISCIARRA@gmail,1869739687,1900-01-00,FI_ACCOUNT,7700,,108,100,,1386 110 | 112,Jose Manuel,Urman,JMURMAN@gmail.com,1889640986,1900-01-00,FI_ACCOUNT,7800,,108,100,,1404 -------------------------------------------------------------------------------- /new_departments.csv: -------------------------------------------------------------------------------- 1 | DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID 2 | 10,Administration,200,1700 3 | 20,Marketing,201,1800 4 | 30,Purchasing,114,1700 5 | 40,Human Resources,203,2400 6 | 50,Shipping,121,1500 7 | 60,IT,103,1400 8 | 70,Public Relations,204,2700 9 | 80,Sales,145,2500 10 | 90,Executive,100,1700 11 | 100,Finance,108,1700 12 | 110,Accounting,205,1700 13 | 120,Treasury,,1700 14 | 130,Corporate Tax,,1700 15 | 140,Control And Credit,,1700 16 | 150,Shareholder Services,,1700 17 | 160,Benefits,,1700 18 | 170,Manufacturing,,1700 19 | 180,Construction,,1700 20 | 190,Contracting,,1700 21 | 200,Operations,,1700 22 | 210,IT Support,,1700 23 | 220,NOC,,1700 24 | 230,IT Helpdesk,,1700 25 | 240,Government Sales,,1700 26 | 250,Retail Sales,,1700 27 | 260,Recruiting,,1700 28 | 270,Payroll,,1700 -------------------------------------------------------------------------------- /new_employees.csv: -------------------------------------------------------------------------------- 1 | EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID 2 | 198,Donald,OConnell,DOCONNEL,650.507.9833,2007-06-21,SH_CLERK,2600,26,124,50 3 | 199,Douglas,Grant,DGRANT,650.507.9844,2008-01-13,SH_CLERK,2600,26,124,50 4 | 200,Jennifer,Whalen,JWHALEN,515.123.4444,2003-09-17,AD_ASST,4400,44,101,10 5 | 201,Michael,Hartstein,MHARTSTE,515.123.5555,2004-02-17,MK_MAN,13000,130,100,20 6 | 202,Pat,Fay,PFAY,603.123.6666,2005-08-17,MK_REP,6000,60,201,20 7 | 203,Susan,Mavris,SMAVRIS,515.123.7777,2002-06-07,HR_REP,6500,65,101,40 8 | 204,Hermann,Baer,HBAER,515.123.8888,2002-06-07,PR_REP,10000,100,101,70 9 | 205,Shelley,Higgins,SHIGGINS,515.123.8080,2002-06-07,AC_MGR,12008,120.08,101,110 10 | 206,William,Gietz,WGIETZ,515.123.8181,2002-06-07,AC_ACCOUNT,8300,83,205,110 11 | 100,Steven,King,SKING,515.123.4567,2003-06-17,AD_PRES,24000,240,,90 12 | 101,Neena,Kochhar,NKOCHHAR,515.123.4568,2005-09-21,AD_VP,17000,170,100,90 13 | 102,Lex,De Haan,LDEHAAN,515.123.4569,2001-01-13,AD_VP,17000,170,100,90 14 | 103,Alexander,Hunold,AHUNOLD,590.423.4567,2006-01-03,IT_PROG,9000,90,102,60 15 | 104,Bruce,Ernst,BERNST,590.423.4568,2007-05-21,IT_PROG,6000,60,103,60 16 | 105,David,Austin,DAUSTIN,590.423.4569,2005-06-25,IT_PROG,4800,48,103,60 17 | 106,Valli,Pataballa,VPATABAL,590.423.4560,2006-02-05,IT_PROG,4800,48,103,60 18 | 107,Diana,Lorentz,DLORENTZ,590.423.5567,2007-02-07,IT_PROG,4200,42,103,60 19 | 108,Nancy,Greenberg,NGREENBE,515.124.4569,2002-08-17,FI_MGR,12008,120.08,101,100 20 | 109,Daniel,Faviet,DFAVIET,515.124.4169,2002-08-16,FI_ACCOUNT,9000,90,108,100 21 | 110,John,Chen,JCHEN,515.124.4269,2005-09-28,FI_ACCOUNT,8200,82,108,100 22 | 111,Ismael,Sciarra,ISCIARRA,515.124.4369,2005-09-30,FI_ACCOUNT,7700,77,108,100 23 | 112,Jose Manuel,Urman,JMURMAN,515.124.4469,2006-03-07,FI_ACCOUNT,7800,78,108,100 24 | 113,Luis,Popp,LPOPP,515.124.4567,2007-12-07,FI_ACCOUNT,6900,69,108,100 25 | 114,Den,Raphaely,DRAPHEAL,515.127.4561,2002-12-07,PU_MAN,11000,110,100,30 26 | 115,Alexander,Khoo,AKHOO,515.127.4562,2003-05-18,PU_CLERK,3100,31,114,30 27 | 116,Shelli,Baida,SBAIDA,515.127.4563,2005-12-24,PU_CLERK,2900,29,114,30 28 | 117,Sigal,Tobias,STOBIAS,515.127.4564,2005-07-24,PU_CLERK,2800,28,114,30 29 | 118,Guy,Himuro,GHIMURO,515.127.4565,2006-11-15,PU_CLERK,2600,26,114,30 30 | 119,Karen,Colmenares,KCOLMENA,515.127.4566,2007-08-10,PU_CLERK,2500,25,114,30 31 | 120,Matthew,Weiss,MWEISS,650.123.1234,2004-07-18,ST_MAN,8000,80,100,50 32 | 121,Adam,Fripp,AFRIPP,650.123.2234,2005-04-10,ST_MAN,8200,82,100,50 33 | 122,Payam,Kaufling,PKAUFLIN,650.123.3234,2003-05-01,ST_MAN,7900,79,100,50 34 | 123,Shanta,Vollman,SVOLLMAN,650.123.4234,2005-10-10,ST_MAN,6500,65,100,50 35 | 124,Kevin,Mourgos,KMOURGOS,650.123.5234,2007-11-16,ST_MAN,5800,58,100,50 36 | 125,Julia,Nayer,JNAYER,650.124.1214,2005-07-16,ST_CLERK,3200,32,120,50 37 | 126,Irene,Mikkilineni,IMIKKILI,650.124.1224,2006-09-28,ST_CLERK,2700,27,120,50 38 | 127,James,Landry,JLANDRY,650.124.1334,2007-01-14,ST_CLERK,2400,24,120,50 39 | 128,Steven,Markle,SMARKLE,650.124.1434,2008-03-08,ST_CLERK,2200,22,120,50 40 | 129,Laura,Bissot,LBISSOT,650.124.5234,2005-08-20,ST_CLERK,3300,33,121,50 41 | 130,Mozhe,Atkinson,MATKINSO,650.124.6234,2005-10-30,ST_CLERK,2800,28,121,50 42 | 131,James,Marlow,JAMRLOW,650.124.7234,2005-02-16,ST_CLERK,2500,25,121,50 43 | 132,TJ,Olson,TJOLSON,650.124.8234,2007-04-10,ST_CLERK,2100,21,121,50 44 | 133,Jason,Mallin,JMALLIN,650.127.1934,2004-06-14,ST_CLERK,3300,33,122,50 45 | 134,Michael,Rogers,MROGERS,650.127.1834,2006-08-26,ST_CLERK,2900,29,122,50 46 | 135,Ki,Gee,KGEE,650.127.1734,2007-12-12,ST_CLERK,2400,24,122,50 47 | 136,Hazel,Philtanker,HPHILTAN,650.127.1634,2008-02-06,ST_CLERK,2200,22,122,50 48 | 137,Renske,Ladwig,RLADWIG,650.121.1234,2003-07-14,ST_CLERK,3600,36,123,50 49 | 138,Stephen,Stiles,SSTILES,650.121.2034,2005-10-26,ST_CLERK,3200,32,123,50 50 | 139,John,Seo,JSEO,650.121.2019,2006-02-12,ST_CLERK,2700,27,123,50 51 | 140,Joshua,Patel,JPATEL,650.121.1834,2006-04-06,ST_CLERK,2500,25,123,50 -------------------------------------------------------------------------------- /sal.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aiQuest-Intelligence/SQL-For-Everybody/37d50f0c2af6d603bc0cfe8d4d87ab8d479c3c67/sal.xlsx -------------------------------------------------------------------------------- /sql10.txt: -------------------------------------------------------------------------------- 1 | 2 | SELECT 3 | * into practice.duplicate_employees 4 | from practice.employees; 5 | 6 | SELECT 7 | first_name, gender 8 | from 9 | practice.duplicate_employees; 10 | 11 | SELECT 12 | DISTINCT 13 | first_name, gender 14 | from 15 | practice.duplicate_employees; 16 | 17 | SELECT 18 | DISTINCT 19 | first_name, gender 20 | from 21 | practice.duplicate_employees; 22 | 23 | 24 | SELECT 25 | DISTINCT 26 | ON (first_name) 27 | first_name, gender 28 | from 29 | practice.duplicate_employees; 30 | 31 | 32 | SELECT 33 | DISTINCT 34 | ON (gender) 35 | gender , first_name 36 | from 37 | practice.duplicate_employees; 38 | 39 | 40 | SELECT 41 | -- DISTINCT 42 | first_name, gender 43 | from 44 | practice.duplicate_employees; 45 | 46 | SELECT 47 | first_name, gender 48 | from 49 | practice.duplicate_employees 50 | GROUP BY 51 | first_name, gender ; 52 | 53 | SELECT 54 | count(*) 55 | from practice.duplicate_employees; 56 | 57 | ---AGGREGATION COUNT, SUM, MAX, MIN, AVG 58 | 59 | SELECT 60 | emp.gender, 61 | count(*) 62 | from practice.duplicate_employees emp 63 | GROUP BY emp.gender; 64 | 65 | SELECT 66 | AGE(emp.birth_date) as employee_age, 67 | EXTRACT (YEAR FROM AGE(emp.birth_date)) as employee_age, 68 | emp.first_name 69 | from practice.duplicate_employees emp ; 70 | 71 | SELECT 72 | EXTRACT (YEAR FROM AGE(emp.birth_date)) as employee_age, 73 | emp.gender 74 | from practice.duplicate_employees emp ; 75 | 76 | 77 | SELECT 78 | EXTRACT (YEAR FROM AGE(emp.birth_date)) as employee_age, 79 | emp.gender 80 | from practice.duplicate_employees emp 81 | group by emp.gender,emp.birth_date; 82 | 83 | SELECT 84 | MAX(EXTRACT (YEAR FROM AGE(emp.birth_date))) as max_employee_age, 85 | emp.gender 86 | from practice.duplicate_employees emp 87 | group by emp.gender; 88 | 89 | SELECT 90 | emp.gender 91 | from practice.duplicate_employees emp 92 | group by emp.gender; 93 | 94 | SELECT 95 | DISTINCT 96 | CASE 97 | WHEN emp.gender='Male' 98 | THEN 'Male' 99 | WHEN emp.gender='m' 100 | THEN 'Male' 101 | WHEN emp.gender='M' 102 | THEN 'Male' 103 | ELSE 'Female' 104 | END 105 | from practice.duplicate_employees emp ; 106 | 107 | 108 | 109 | SELECT 110 | DISTINCT 111 | CASE 112 | WHEN emp.gender IN ('Male','m','M') 113 | THEN 'Male' 114 | ELSE 'Female' 115 | END 116 | from practice.duplicate_employees emp ; 117 | 118 | select 119 | emp.salary 120 | from practice.duplicate_employees emp 121 | WHERE salary IS NOT NULL ; 122 | 123 | select 124 | emp.salary , 125 | count(*) 126 | from practice.duplicate_employees emp 127 | WHERE salary IS NOT NULL 128 | GROUP BY emp.salary; 129 | 130 | 131 | select 132 | emp.gender, 133 | emp.salary , 134 | count(*) 135 | from practice.duplicate_employees emp 136 | WHERE salary>500000 137 | GROUP BY emp.salary,emp.gender; 138 | 139 | 140 | select 141 | emp.gender, 142 | emp.salary , 143 | count(*) 144 | from practice.duplicate_employees emp 145 | -- WHERE salary>500000 146 | GROUP BY emp.salary,emp.gender 147 | HAVING salary>500000; 148 | 149 | 150 | select 151 | emp.gender, 152 | sum(emp.salary) as salary 153 | from practice.duplicate_employees emp 154 | GROUP BY emp.gender 155 | HAVING sum(emp.salary)<1000000; 156 | ---------------------- 157 | select 158 | emp.gender, 159 | sum(emp.salary) as salary 160 | from practice.duplicate_employees emp 161 | WHERE salary < 1000000 162 | GROUP BY emp.gender; 163 | 164 | SELECT DISTINCT salary, gender, emp.first_name from 165 | practice.duplicate_employees emp 166 | where emp.salary IS NOT NULL; -------------------------------------------------------------------------------- /sql11.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2639 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;\f1\fnil\fcharset0 Menlo-Bold;} 3 | {\colortbl;\red255\green255\blue255;\red115\green158\blue202;\red170\green170\blue170;\red158\green158\blue158; 4 | \red192\green192\blue192;\red238\green204\blue100;\red202\green197\blue128;\red193\green170\blue108;\red126\green186\blue211; 5 | \red102\green151\blue104;} 6 | {\*\expandedcolortbl;;\csgenericrgb\c45098\c61961\c79216;\csgenericrgb\c66667\c66667\c66667;\csgenericrgb\c61961\c61961\c61961; 7 | \csgenericrgb\c75294\c75294\c75294;\csgenericrgb\c93333\c80000\c39216;\csgenericrgb\c79216\c77255\c50196;\csgenericrgb\c75686\c66667\c42353;\csgenericrgb\c49412\c72941\c82745; 8 | \csgenericrgb\c40000\c59216\c40784;} 9 | \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 10 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 11 | 12 | \f0\fs44 \cf0 \ 13 | \pard\pardeftab720\partightenfactor0 14 | 15 | \f1\b \cf2 SELECT 16 | \f0\b0 \cf3 * 17 | \f1\b \cf2 from 18 | \f0\b0 \cf3 \cf4 practice\cf3 .\cf4 employees\cf3 19 | \f1\b \cf2 limit 20 | \f0\b0 \cf3 \cf5 10\cf6 ;\cf3 \uc0\u8232 \cf0 \ 21 | 22 | \f1\b \cf2 SELECT 23 | \f0\b0 \cf3 \cf0 \ 24 | \pard\pardeftab720\partightenfactor0 25 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf4 emp\cf3 .\cf4 last_name\cf3 ,\cf0 \ 26 | \cf4 emp\cf3 .\cf4 first_name\cf3 || \cf7 ' '\cf3 || \cf4 emp\cf3 .\cf4 last_name\cf3 27 | \f1\b \cf2 as 28 | \f0\b0 \cf3 \cf4 full_name\cf3 ,\cf0 \ 29 | \pard\pardeftab720\partightenfactor0 30 | 31 | \f1\b \cf8 concat 32 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf7 ' '\cf3 ,\cf4 emp\cf3 .\cf4 last_name\cf3 ) \cf4 \ul \ulc4 fname\cf0 \ulnone \ 33 | \pard\pardeftab720\partightenfactor0 34 | 35 | \f1\b \cf2 from 36 | \f0\b0 \cf3 \cf0 \ 37 | \pard\pardeftab720\partightenfactor0 38 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 39 | \ 40 | \ 41 | \pard\pardeftab720\partightenfactor0 42 | 43 | \f1\b \cf2 SELECT 44 | \f0\b0 \cf3 \cf0 \ 45 | \pard\pardeftab720\partightenfactor0 46 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 47 | \pard\pardeftab720\partightenfactor0 48 | 49 | \f1\b \cf8 LEFT 50 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf5 2\cf3 ),\cf0 \ 51 | 52 | \f1\b \cf8 RIGHT 53 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf5 2\cf3 )\cf0 \ 54 | \pard\pardeftab720\partightenfactor0 55 | 56 | \f1\b \cf2 from 57 | \f0\b0 \cf3 \cf0 \ 58 | \pard\pardeftab720\partightenfactor0 59 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 60 | \ 61 | \pard\pardeftab720\partightenfactor0 62 | 63 | \f1\b \cf2 SELECT 64 | \f0\b0 \cf3 \cf0 \ 65 | \pard\pardeftab720\partightenfactor0 66 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 67 | \pard\pardeftab720\partightenfactor0 68 | 69 | \f1\b \cf8 LENGTH 70 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 )\cf0 \ 71 | \pard\pardeftab720\partightenfactor0 72 | 73 | \f1\b \cf2 from 74 | \f0\b0 \cf3 \cf0 \ 75 | \pard\pardeftab720\partightenfactor0 76 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 77 | \ 78 | \pard\pardeftab720\partightenfactor0 79 | 80 | \f1\b \cf2 SELECT 81 | \f0\b0 \cf3 \cf0 \ 82 | \pard\pardeftab720\partightenfactor0 83 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 84 | \pard\pardeftab720\partightenfactor0 85 | 86 | \f1\b \cf8 LEFT 87 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf5 2\cf3 ),\cf0 \ 88 | 89 | \f1\b \cf8 LENGTH 90 | \f0\b0 \cf3 ( 91 | \f1\b \cf8 LEFT 92 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf5 2\cf3 ))\cf0 \ 93 | \pard\pardeftab720\partightenfactor0 94 | 95 | \f1\b \cf2 from 96 | \f0\b0 \cf3 \cf0 \ 97 | \pard\pardeftab720\partightenfactor0 98 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 99 | \ 100 | \pard\pardeftab720\partightenfactor0 101 | 102 | \f1\b \cf2 SELECT 103 | \f0\b0 \cf3 \cf0 \ 104 | \pard\pardeftab720\partightenfactor0 105 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 106 | \cf4 emp\cf3 .\cf4 salary\cf0 \ 107 | \pard\pardeftab720\partightenfactor0 108 | \cf3 , 109 | \f1\b \cf8 LPAD 110 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 salary\cf3 :: 111 | \f1\b \cf8 varchar 112 | \f0\b0 \cf3 ,\cf5 7\cf3 ,\cf7 '0'\cf3 )\cf0 \ 113 | \cf3 , 114 | \f1\b \cf8 RPAD 115 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 salary\cf3 :: 116 | \f1\b \cf8 varchar 117 | \f0\b0 \cf3 ,\cf5 6\cf3 ,\cf7 'x'\cf3 )\cf0 \ 118 | \pard\pardeftab720\partightenfactor0 119 | 120 | \f1\b \cf2 from 121 | \f0\b0 \cf3 \cf0 \ 122 | \pard\pardeftab720\partightenfactor0 123 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 124 | \ 125 | \pard\pardeftab720\partightenfactor0 126 | 127 | \f1\b \cf2 SELECT 128 | \f0\b0 \cf3 \cf0 \ 129 | \pard\pardeftab720\partightenfactor0 130 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 131 | \pard\pardeftab720\partightenfactor0 132 | 133 | \f1\b \cf8 POSITION 134 | \f0\b0 \cf3 (\cf7 'lex'\cf3 135 | \f1\b \cf2 IN 136 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 first_name\cf3 )\cf0 \ 137 | \pard\pardeftab720\partightenfactor0 138 | 139 | \f1\b \cf2 from 140 | \f0\b0 \cf3 \cf0 \ 141 | \pard\pardeftab720\partightenfactor0 142 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 143 | \ 144 | \pard\pardeftab720\partightenfactor0 145 | 146 | \f1\b \cf2 SELECT 147 | \f0\b0 \cf3 \cf0 \ 148 | \pard\pardeftab720\partightenfactor0 149 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 150 | \pard\pardeftab720\partightenfactor0 151 | 152 | \f1\b \cf8 LTRIM 153 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ),\cf0 \ 154 | 155 | \f1\b \cf8 RTRIM 156 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ),\cf0 \ 157 | 158 | \f1\b \cf8 TRIM 159 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 )\cf0 \ 160 | \pard\pardeftab720\partightenfactor0 161 | 162 | \f1\b \cf2 from 163 | \f0\b0 \cf3 \cf0 \ 164 | \pard\pardeftab720\partightenfactor0 165 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf6 ;\cf0 \ 166 | \ 167 | \pard\pardeftab720\partightenfactor0 168 | 169 | \f1\b \cf2 SELECT 170 | \f0\b0 \cf3 \cf0 \ 171 | \pard\pardeftab720\partightenfactor0 172 | \cf3 *\cf0 \ 173 | \pard\pardeftab720\partightenfactor0 174 | 175 | \f1\b \cf2 from 176 | \f0\b0 \cf3 \cf0 \ 177 | \pard\pardeftab720\partightenfactor0 178 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 179 | \pard\pardeftab720\partightenfactor0 180 | 181 | \f1\b \cf2 where 182 | \f0\b0 \cf3 \cf4 last_name\cf3 =\cf7 'Chen'\cf6 ;\cf0 \ 183 | \ 184 | \ 185 | 186 | \f1\b \cf2 SELECT 187 | \f0\b0 \cf3 \cf0 \ 188 | \pard\pardeftab720\partightenfactor0 189 | \cf4 emp\cf3 .\cf4 first_name\cf3 ,\cf0 \ 190 | \pard\pardeftab720\partightenfactor0 191 | 192 | \f1\b \cf8 lower 193 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 ),\cf0 \ 194 | 195 | \f1\b \cf8 upper 196 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 first_name\cf3 )\cf0 \ 197 | \pard\pardeftab720\partightenfactor0 198 | 199 | \f1\b \cf2 from 200 | \f0\b0 \cf3 \cf0 \ 201 | \pard\pardeftab720\partightenfactor0 202 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 203 | \pard\pardeftab720\partightenfactor0 204 | 205 | \f1\b \cf2 where 206 | \f0\b0 \cf3 \cf4 last_name\cf3 = 207 | \f1\b \cf9 $user_input 208 | \f0\b0 \cf6 ;\cf0 \ 209 | \ 210 | 211 | \f1\b \cf2 SELECT 212 | \f0\b0 \cf3 \cf0 \ 213 | \pard\pardeftab720\partightenfactor0 214 | \cf3 *\cf0 \ 215 | \pard\pardeftab720\partightenfactor0 216 | 217 | \f1\b \cf2 from 218 | \f0\b0 \cf3 \cf0 \ 219 | \pard\pardeftab720\partightenfactor0 220 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 221 | \pard\pardeftab720\partightenfactor0 222 | 223 | \f1\b \cf2 where 224 | \f0\b0 \cf3 225 | \f1\b \cf8 lower 226 | \f0\b0 \cf3 (\cf4 last_name\cf3 )= 227 | \f1\b \cf9 $user_input 228 | \f0\b0 \cf6 ;\cf0 \ 229 | \ 230 | 231 | \f1\b \cf2 SELECT 232 | \f0\b0 \cf3 \cf0 \ 233 | \pard\pardeftab720\partightenfactor0 234 | \cf3 *\cf0 \ 235 | \pard\pardeftab720\partightenfactor0 236 | 237 | \f1\b \cf2 from 238 | \f0\b0 \cf3 \cf0 \ 239 | \pard\pardeftab720\partightenfactor0 240 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 241 | \pard\pardeftab720\partightenfactor0 242 | 243 | \f1\b \cf2 where 244 | \f0\b0 \cf3 245 | \f1\b \cf8 lower 246 | \f0\b0 \cf3 (\cf4 last_name\cf3 )= 247 | \f1\b \cf8 lower 248 | \f0\b0 \cf3 ( 249 | \f1\b \cf9 $user_input 250 | \f0\b0 \cf3 )\cf6 ;\cf0 \ 251 | \ 252 | 253 | \f1\b \cf2 SELECT 254 | \f0\b0 \cf3 \cf0 \ 255 | \pard\pardeftab720\partightenfactor0 256 | \cf3 *\cf0 \ 257 | \pard\pardeftab720\partightenfactor0 258 | 259 | \f1\b \cf2 from 260 | \f0\b0 \cf3 \cf0 \ 261 | \pard\pardeftab720\partightenfactor0 262 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 263 | \pard\pardeftab720\partightenfactor0 264 | 265 | \f1\b \cf2 where 266 | \f0\b0 \cf3 267 | \f1\b \cf8 UPPER 268 | \f0\b0 \cf3 (\cf4 last_name\cf3 )= 269 | \f1\b \cf8 UPPER 270 | \f0\b0 \cf3 ( 271 | \f1\b \cf9 $user_input 272 | \f0\b0 \cf3 )\cf6 ;\cf0 \ 273 | \ 274 | \pard\pardeftab720\partightenfactor0 275 | \cf3 +\cf5 880153543535\cf0 \ 276 | \pard\pardeftab720\partightenfactor0 277 | \cf5 880875764674\cf0 \ 278 | \cf5 017856546535\cf0 \ 279 | \cf5 15465353366\cf3 \cf10 --IDEAL\cf0 \ 280 | \cf5 154\cf3 -\cf5 65353366\cf0 \ 281 | \cf5 1546\cf3 \cf5 5353366\cf0 \ 282 | \ 283 | \pard\pardeftab720\partightenfactor0 284 | 285 | \f1\b \cf2 select 286 | \f0\b0 \cf3 \cf0 \ 287 | \pard\pardeftab720\partightenfactor0 288 | 289 | \f1\b \cf9 $input_phone 290 | \f0\b0 \cf3 ,\cf0 \ 291 | \pard\pardeftab720\partightenfactor0 292 | 293 | \f1\b \cf8 TRIM 294 | \f0\b0 \cf3 (\cf0 \ 295 | \pard\pardeftab720\partightenfactor0 296 | \cf3 297 | \f1\b \cf2 leading 298 | \f0\b0 \cf3 \cf7 '880'\cf3 299 | \f1\b \cf2 from 300 | \f0\b0 \cf3 301 | \f1\b \cf8 cast 302 | \f0\b0 \cf3 ( 303 | \f1\b \cf9 $input_phone 304 | \f0\b0 \cf3 305 | \f1\b \cf2 as 306 | \f0\b0 \cf3 307 | \f1\b \cf8 TEXT 308 | \f0\b0 \cf3 )\cf0 \ 309 | \cf3 )\cf6 ;\cf0 \ 310 | \ 311 | \ 312 | \pard\pardeftab720\partightenfactor0 313 | 314 | \f1\b \cf2 select 315 | \f0\b0 \cf3 \cf0 \ 316 | \pard\pardeftab720\partightenfactor0 317 | 318 | \f1\b \cf8 now 319 | \f0\b0 \cf3 (),\cf0 \ 320 | 321 | \f1\b \cf8 current_timestamp 322 | \f0\b0 \cf3 ,\cf0 \ 323 | 324 | \f1\b \cf8 current_date 325 | \f0\b0 \cf3 ,\cf0 \ 326 | 327 | \f1\b \cf8 now 328 | \f0\b0 \cf3 ():: 329 | \f1\b \cf8 date 330 | \f0\b0 \cf3 ,\cf0 \ 331 | 332 | \f1\b \cf8 now 333 | \f0\b0 \cf3 () - 334 | \f1\b \cf8 interval 335 | \f0\b0 \cf3 \cf7 '18 years'\cf3 ,\cf0 \ 336 | 337 | \f1\b \cf8 now 338 | \f0\b0 \cf3 ():: 339 | \f1\b \cf8 date 340 | \f0\b0 \cf3 - 341 | \f1\b \cf8 interval 342 | \f0\b0 \cf3 \cf7 '18 years'\cf3 ,\cf0 \ 343 | 344 | \f1\b \cf8 now 345 | \f0\b0 \cf3 () + 346 | \f1\b \cf8 interval 347 | \f0\b0 \cf3 \cf7 '1 month'\cf3 ,\cf0 \ 348 | 349 | \f1\b \cf8 now 350 | \f0\b0 \cf3 () + 351 | \f1\b \cf8 interval 352 | \f0\b0 \cf3 \cf7 '2 week'\cf6 ;\cf0 \ 353 | \ 354 | \ 355 | \ 356 | \ 357 | \ 358 | \pard\pardeftab720\partightenfactor0 359 | 360 | \f1\b \cf2 SELECT 361 | \f0\b0 \cf3 \cf0 \ 362 | \pard\pardeftab720\partightenfactor0 363 | \cf3 *\cf0 \ 364 | \pard\pardeftab720\partightenfactor0 365 | 366 | \f1\b \cf2 from 367 | \f0\b0 \cf3 \cf0 \ 368 | \pard\pardeftab720\partightenfactor0 369 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 370 | \pard\pardeftab720\partightenfactor0 371 | 372 | \f1\b \cf2 where 373 | \f0\b0 \cf3 374 | \f1\b \cf8 UPPER 375 | \f0\b0 \cf3 (\cf4 first_name\cf3 ) 376 | \f1\b \cf2 LIKE 377 | \f0\b0 \cf3 378 | \f1\b \cf8 UPPER 379 | \f0\b0 \cf3 (\cf7 '%ex%'\cf3 )\cf6 ;\cf0 \ 380 | \ 381 | \ 382 | 383 | \f1\b \cf2 SELECT 384 | \f0\b0 \cf3 \cf0 \ 385 | \pard\pardeftab720\partightenfactor0 386 | \cf3 *\cf0 \ 387 | \pard\pardeftab720\partightenfactor0 388 | 389 | \f1\b \cf2 from 390 | \f0\b0 \cf3 \cf0 \ 391 | \pard\pardeftab720\partightenfactor0 392 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 393 | \pard\pardeftab720\partightenfactor0 394 | 395 | \f1\b \cf2 where 396 | \f0\b0 \cf3 397 | \f1\b \cf8 UPPER 398 | \f0\b0 \cf3 (\cf4 first_name\cf3 ) 399 | \f1\b \cf2 LIKE 400 | \f0\b0 \cf3 401 | \f1\b \cf8 UPPER 402 | \f0\b0 \cf3 (\cf7 'lE%'\cf3 )\cf6 ;\cf0 \ 403 | \ 404 | 405 | \f1\b \cf2 SELECT 406 | \f0\b0 \cf3 \cf0 \ 407 | \pard\pardeftab720\partightenfactor0 408 | \cf3 *\cf0 \ 409 | \pard\pardeftab720\partightenfactor0 410 | 411 | \f1\b \cf2 from 412 | \f0\b0 \cf3 \cf0 \ 413 | \pard\pardeftab720\partightenfactor0 414 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 415 | \pard\pardeftab720\partightenfactor0 416 | 417 | \f1\b \cf2 where 418 | \f0\b0 \cf3 419 | \f1\b \cf8 UPPER 420 | \f0\b0 \cf3 (\cf4 first_name\cf3 ) 421 | \f1\b \cf2 LIKE 422 | \f0\b0 \cf3 423 | \f1\b \cf8 UPPER 424 | \f0\b0 \cf3 (\cf7 '%a'\cf3 )\cf6 ;\cf0 \ 425 | \ 426 | 427 | \f1\b \cf2 SELECT 428 | \f0\b0 \cf3 \cf0 \ 429 | \pard\pardeftab720\partightenfactor0 430 | \cf3 *\cf0 \ 431 | \pard\pardeftab720\partightenfactor0 432 | 433 | \f1\b \cf2 from 434 | \f0\b0 \cf3 \cf0 \ 435 | \pard\pardeftab720\partightenfactor0 436 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 437 | \pard\pardeftab720\partightenfactor0 438 | 439 | \f1\b \cf2 where 440 | \f0\b0 \cf3 441 | \f1\b \cf8 UPPER 442 | \f0\b0 \cf3 (\cf4 first_name\cf3 ) 443 | \f1\b \cf2 LIKE 444 | \f0\b0 \cf3 445 | \f1\b \cf8 UPPER 446 | \f0\b0 \cf3 (\cf7 '_ex%'\cf3 )\cf6 ;\cf0 \ 447 | \ 448 | 449 | \f1\b \cf2 SELECT 450 | \f0\b0 \cf3 \cf0 \ 451 | \pard\pardeftab720\partightenfactor0 452 | \cf3 *\cf0 \ 453 | \pard\pardeftab720\partightenfactor0 454 | 455 | \f1\b \cf2 from 456 | \f0\b0 \cf3 \cf0 \ 457 | \pard\pardeftab720\partightenfactor0 458 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 459 | \pard\pardeftab720\partightenfactor0 460 | 461 | \f1\b \cf2 where 462 | \f0\b0 \cf3 463 | \f1\b \cf8 UPPER 464 | \f0\b0 \cf3 (\cf4 first_name\cf3 ) 465 | \f1\b \cf2 LIKE 466 | \f0\b0 \cf3 467 | \f1\b \cf8 UPPER 468 | \f0\b0 \cf3 (\cf7 '__ex__'\cf3 )\cf6 ;\cf0 \ 469 | \ 470 | \ 471 | 472 | \f1\b \cf2 select 473 | \f0\b0 \cf3 474 | \f1\b \cf8 current_date 475 | \f0\b0 \cf3 ,\cf0 \ 476 | 477 | \f1\b \cf2 extract 478 | \f0\b0 \cf3 ( 479 | \f1\b \cf2 day 480 | \f0\b0 \cf3 481 | \f1\b \cf2 from 482 | \f0\b0 \cf3 483 | \f1\b \cf8 current_date 484 | \f0\b0 \cf3 ),\cf0 \ 485 | \pard\pardeftab720\partightenfactor0 486 | 487 | \f1\b \cf8 DATE_PART 488 | \f0\b0 \cf3 (\cf7 'DAY'\cf3 , 489 | \f1\b \cf8 current_date 490 | \f0\b0 \cf3 )\cf6 ;\cf0 \ 491 | \ 492 | \ 493 | \pard\pardeftab720\partightenfactor0 494 | \cf10 --NULL \cf0 \ 495 | \pard\pardeftab720\partightenfactor0 496 | 497 | \f1\b \cf2 select 498 | \f0\b0 \cf3 \cf0 \ 499 | \pard\pardeftab720\partightenfactor0 500 | \cf4 EM\cf3 .\cf4 first_name\cf3 ,\cf0 \ 501 | \cf4 em\cf3 .\cf4 salary\cf3 , \cf4 em\cf3 .\cf4 bonus\cf3 , \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 502 | \f1\b \cf2 as 503 | \f0\b0 \cf3 \cf4 COMMISSION\cf3 ,\cf0 \ 504 | \cf4 em\cf3 .\cf4 salary\cf3 + \cf4 em\cf3 .\cf4 bonus\cf3 + \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 505 | \f1\b \cf2 as 506 | \f0\b0 \cf3 \cf8 "TOTAL AMOUNT"\cf0 \ 507 | \pard\pardeftab720\partightenfactor0 508 | 509 | \f1\b \cf2 from 510 | \f0\b0 \cf3 \cf0 \ 511 | \pard\pardeftab720\partightenfactor0 512 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 513 | \ 514 | \ 515 | \pard\pardeftab720\partightenfactor0 516 | 517 | \f1\b \cf2 select 518 | \f0\b0 \cf3 \cf0 \ 519 | \pard\pardeftab720\partightenfactor0 520 | \cf4 EM\cf3 .\cf4 first_name\cf3 ,\cf0 \ 521 | \cf4 em\cf3 .\cf4 salary\cf3 , \cf4 em\cf3 .\cf4 bonus\cf3 , \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 522 | \f1\b \cf2 as 523 | \f0\b0 \cf3 \cf4 COMMISSION\cf3 ,\cf0 \ 524 | \cf4 em\cf3 .\cf4 salary\cf3 + 525 | \f1\b \cf8 coalesce 526 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 bonus\cf3 ,\cf5 0\cf3 ) + 527 | \f1\b \cf8 coalesce 528 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 commission_pct\cf3 ,\cf5 0\cf3 )*\cf4 em\cf3 .\cf4 salary\cf3 529 | \f1\b \cf2 as 530 | \f0\b0 \cf3 \cf8 "TOTAL AMOUNT"\cf0 \ 531 | \pard\pardeftab720\partightenfactor0 532 | 533 | \f1\b \cf2 from 534 | \f0\b0 \cf3 \cf0 \ 535 | \pard\pardeftab720\partightenfactor0 536 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 537 | \ 538 | \ 539 | \ 540 | \pard\pardeftab720\partightenfactor0 541 | 542 | \f1\b \cf2 select 543 | \f0\b0 \cf3 \cf0 \ 544 | \pard\pardeftab720\partightenfactor0 545 | \cf4 EM\cf3 .\cf4 first_name\cf3 ,\cf0 \ 546 | \cf4 em\cf3 .\cf4 salary\cf3 , \cf4 em\cf3 .\cf4 bonus\cf3 , \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 547 | \f1\b \cf2 as 548 | \f0\b0 \cf3 \cf4 COMMISSION\cf3 ,\cf0 \ 549 | \cf4 em\cf3 .\cf4 salary\cf3 + 550 | \f1\b \cf8 coalesce 551 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 commission_pct\cf3 ,\cf4 em\cf3 .\cf4 bonus\cf3 ,\cf5 0\cf3 )*\cf4 em\cf3 .\cf4 salary\cf3 552 | \f1\b \cf2 as 553 | \f0\b0 \cf3 \cf8 "TOTAL AMOUNT"\cf0 \ 554 | \pard\pardeftab720\partightenfactor0 555 | 556 | \f1\b \cf2 case 557 | \f0\b0 \cf3 \cf0 \ 558 | \pard\pardeftab720\partightenfactor0 559 | \cf3 560 | \f1\b \cf2 when 561 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 562 | \f1\b \cf2 is 563 | \f0\b0 \cf3 564 | \f1\b \cf2 null 565 | \f0\b0 \cf3 \cf0 \ 566 | \cf3 567 | \f1\b \cf2 then 568 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 bonus\cf3 \cf0 \ 569 | \cf3 570 | \f1\b \cf2 else 571 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 \cf0 \ 572 | \pard\pardeftab720\partightenfactor0 573 | 574 | \f1\b \cf2 end 575 | \f0\b0 \cf0 \ 576 | 577 | \f1\b \cf2 from 578 | \f0\b0 \cf3 \cf0 \ 579 | \pard\pardeftab720\partightenfactor0 580 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 581 | \ 582 | \ 583 | \ 584 | \ 585 | \pard\pardeftab720\partightenfactor0 586 | 587 | \f1\b \cf2 select 588 | \f0\b0 \cf3 \cf0 \ 589 | \pard\pardeftab720\partightenfactor0 590 | \cf4 EM\cf3 .\cf4 first_name\cf3 ,\cf0 \ 591 | \cf4 em\cf3 .\cf4 salary\cf3 , \cf4 em\cf3 .\cf4 bonus\cf3 , \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 592 | \f1\b \cf2 as 593 | \f0\b0 \cf3 \cf4 COMMISSION\cf3 ,\cf0 \ 594 | \cf4 em\cf3 .\cf4 salary\cf3 + 595 | \f1\b \cf8 coalesce 596 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 commission_pct\cf3 ,\cf4 em\cf3 .\cf4 bonus\cf3 ,\cf5 0\cf3 )*\cf4 em\cf3 .\cf4 salary\cf3 597 | \f1\b \cf2 as 598 | \f0\b0 \cf3 \cf8 "TOTAL AMOUNT"\cf0 \ 599 | \pard\pardeftab720\partightenfactor0 600 | \cf3 , 601 | \f1\b \cf2 case 602 | \f0\b0 \cf3 \cf0 \ 603 | \cf3 604 | \f1\b \cf2 when 605 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 606 | \f1\b \cf2 is 607 | \f0\b0 \cf3 608 | \f1\b \cf2 null 609 | \f0\b0 \cf3 \cf0 \ 610 | \cf3 611 | \f1\b \cf2 then 612 | \f0\b0 \cf3 \cf0 \ 613 | \cf3 614 | \f1\b \cf2 case 615 | \f0\b0 \cf3 \cf0 \ 616 | \cf3 617 | \f1\b \cf2 when 618 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 bonus\cf3 619 | \f1\b \cf2 is 620 | \f0\b0 \cf3 621 | \f1\b \cf2 not 622 | \f0\b0 \cf3 623 | \f1\b \cf2 null 624 | \f0\b0 \cf3 625 | \f1\b \cf2 then 626 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 bonus\cf3 \cf0 \ 627 | \cf3 628 | \f1\b \cf2 else 629 | \f0\b0 \cf3 \cf5 0\cf0 \ 630 | \cf3 631 | \f1\b \cf2 end 632 | \f0\b0 \cf0 \ 633 | \cf3 634 | \f1\b \cf2 else 635 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 \cf0 \ 636 | \pard\pardeftab720\partightenfactor0 637 | 638 | \f1\b \cf2 end 639 | \f0\b0 \cf0 \ 640 | 641 | \f1\b \cf2 from 642 | \f0\b0 \cf3 \cf0 \ 643 | \pard\pardeftab720\partightenfactor0 644 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 645 | \ 646 | \ 647 | \pard\pardeftab720\partightenfactor0 648 | 649 | \f1\b \cf2 select 650 | \f0\b0 \cf3 \cf0 \ 651 | \pard\pardeftab720\partightenfactor0 652 | \cf4 EM\cf3 .\cf4 first_name\cf3 ,\cf0 \ 653 | \cf4 em\cf3 .\cf4 salary\cf3 , \cf4 em\cf3 .\cf4 bonus\cf3 , \cf4 em\cf3 .\cf4 commission_pct\cf3 *\cf4 em\cf3 .\cf4 salary\cf3 654 | \f1\b \cf2 as 655 | \f0\b0 \cf3 \cf4 COMMISSION\cf3 ,\cf0 \ 656 | \cf4 em\cf3 .\cf4 salary\cf3 + 657 | \f1\b \cf8 coalesce 658 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 commission_pct\cf3 ,\cf4 em\cf3 .\cf4 bonus\cf3 ,\cf5 0\cf3 )*\cf4 em\cf3 .\cf4 salary\cf3 659 | \f1\b \cf2 as 660 | \f0\b0 \cf3 \cf8 "TOTAL AMOUNT"\cf0 \ 661 | \pard\pardeftab720\partightenfactor0 662 | \cf3 , 663 | \f1\b \cf2 case 664 | \f0\b0 \cf3 \cf0 \ 665 | \cf3 666 | \f1\b \cf2 when 667 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 668 | \f1\b \cf2 is 669 | \f0\b0 \cf3 670 | \f1\b \cf2 null 671 | \f0\b0 \cf3 \cf0 \ 672 | \cf3 673 | \f1\b \cf2 then 674 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 bonus\cf3 \cf0 \ 675 | \cf3 676 | \f1\b \cf2 else 677 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 commission_pct\cf3 \cf0 \ 678 | \pard\pardeftab720\partightenfactor0 679 | 680 | \f1\b \cf2 end 681 | \f0\b0 \cf0 \ 682 | 683 | \f1\b \cf2 from 684 | \f0\b0 \cf3 \cf0 \ 685 | \pard\pardeftab720\partightenfactor0 686 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 687 | \ 688 | \ 689 | \pard\pardeftab720\partightenfactor0 690 | 691 | \f1\b \cf2 select 692 | \f0\b0 \cf3 \cf0 \ 693 | \pard\pardeftab720\partightenfactor0 694 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 695 | \pard\pardeftab720\partightenfactor0 696 | 697 | \f1\b \cf2 from 698 | \f0\b0 \cf3 \cf0 \ 699 | \pard\pardeftab720\partightenfactor0 700 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 701 | \pard\pardeftab720\partightenfactor0 702 | 703 | \f1\b \cf2 where 704 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 705 | \f1\b \cf2 like 706 | \f0\b0 \cf3 \cf7 '%@gmail.com'\cf0 \ 707 | \pard\pardeftab720\partightenfactor0 708 | \cf6 ;\cf0 \ 709 | \ 710 | \ 711 | \pard\pardeftab720\partightenfactor0 712 | 713 | \f1\b \cf2 select 714 | \f0\b0 \cf3 \cf0 \ 715 | \pard\pardeftab720\partightenfactor0 716 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 717 | \pard\pardeftab720\partightenfactor0 718 | 719 | \f1\b \cf2 from 720 | \f0\b0 \cf3 \cf0 \ 721 | \pard\pardeftab720\partightenfactor0 722 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 723 | \pard\pardeftab720\partightenfactor0 724 | 725 | \f1\b \cf2 where 726 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 727 | \f1\b \cf2 like 728 | \f0\b0 \cf3 \cf7 '%@%'\cf0 \ 729 | \pard\pardeftab720\partightenfactor0 730 | \cf6 ;\cf0 \ 731 | \ 732 | \pard\pardeftab720\partightenfactor0 733 | 734 | \f1\b \cf2 select 735 | \f0\b0 \cf3 \cf0 \ 736 | \pard\pardeftab720\partightenfactor0 737 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 738 | \pard\pardeftab720\partightenfactor0 739 | 740 | \f1\b \cf2 from 741 | \f0\b0 \cf3 \cf0 \ 742 | \pard\pardeftab720\partightenfactor0 743 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 744 | \pard\pardeftab720\partightenfactor0 745 | 746 | \f1\b \cf2 where 747 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 ~*\cf7 '.com'\cf0 \ 748 | \pard\pardeftab720\partightenfactor0 749 | \cf6 ;\cf0 \ 750 | \ 751 | \ 752 | \pard\pardeftab720\partightenfactor0 753 | 754 | \f1\b \cf2 select 755 | \f0\b0 \cf3 \cf0 \ 756 | \pard\pardeftab720\partightenfactor0 757 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 758 | \pard\pardeftab720\partightenfactor0 759 | 760 | \f1\b \cf2 from 761 | \f0\b0 \cf3 \cf0 \ 762 | \pard\pardeftab720\partightenfactor0 763 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 764 | \pard\pardeftab720\partightenfactor0 765 | 766 | \f1\b \cf2 where 767 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 ~*\cf7 '^A'\cf0 \ 768 | \pard\pardeftab720\partightenfactor0 769 | \cf6 ;\cf0 \ 770 | \pard\pardeftab720\partightenfactor0 771 | 772 | \f1\b \cf2 select 773 | \f0\b0 \cf3 \cf0 \ 774 | \pard\pardeftab720\partightenfactor0 775 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 776 | \pard\pardeftab720\partightenfactor0 777 | 778 | \f1\b \cf2 from 779 | \f0\b0 \cf3 \cf0 \ 780 | \pard\pardeftab720\partightenfactor0 781 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 782 | \pard\pardeftab720\partightenfactor0 783 | 784 | \f1\b \cf2 where 785 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 ~*\cf7 '.com$'\cf0 \ 786 | \pard\pardeftab720\partightenfactor0 787 | \cf6 ;\cf0 \ 788 | \ 789 | \pard\pardeftab720\partightenfactor0 790 | 791 | \f1\b \cf2 select 792 | \f0\b0 \cf3 \cf0 \ 793 | \pard\pardeftab720\partightenfactor0 794 | \cf4 emp\cf3 .\cf4 first_name\cf3 , \cf4 emp\cf3 .\cf4 email\cf3 \cf0 \ 795 | \pard\pardeftab720\partightenfactor0 796 | 797 | \f1\b \cf2 from 798 | \f0\b0 \cf3 \cf0 \ 799 | \pard\pardeftab720\partightenfactor0 800 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 801 | \pard\pardeftab720\partightenfactor0 802 | 803 | \f1\b \cf2 where 804 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 email\cf3 !~*\cf7 '.com$'\cf0 \ 805 | \pard\pardeftab720\partightenfactor0 806 | \cf6 ;\cf0 \ 807 | \ 808 | \pard\pardeftab720\partightenfactor0 809 | 810 | \f1\b \cf2 select 811 | \f0\b0 \cf3 \cf0 \ 812 | \pard\pardeftab720\partightenfactor0 813 | 814 | \f1\b \cf8 max 815 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 816 | \pard\pardeftab720\partightenfactor0 817 | 818 | \f1\b \cf2 from 819 | \f0\b0 \cf3 \cf0 \ 820 | \pard\pardeftab720\partightenfactor0 821 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf6 ;\cf0 \ 822 | \ 823 | \pard\pardeftab720\partightenfactor0 824 | 825 | \f1\b \cf2 select 826 | \f0\b0 \cf3 \cf0 \ 827 | \pard\pardeftab720\partightenfactor0 828 | \cf4 em\cf3 .\cf4 department_id\cf3 ,\cf0 \ 829 | \pard\pardeftab720\partightenfactor0 830 | 831 | \f1\b \cf8 max 832 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 833 | \pard\pardeftab720\partightenfactor0 834 | 835 | \f1\b \cf2 from 836 | \f0\b0 \cf3 \cf0 \ 837 | \pard\pardeftab720\partightenfactor0 838 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 839 | \pard\pardeftab720\partightenfactor0 840 | 841 | \f1\b \cf2 group 842 | \f0\b0 \cf3 843 | \f1\b \cf2 by 844 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 department_id\cf3 \cf6 ;\cf0 \ 845 | \ 846 | 847 | \f1\b \cf2 select 848 | \f0\b0 \cf3 \cf0 \ 849 | \pard\pardeftab720\partightenfactor0 850 | \cf4 em\cf3 .\cf4 department_id\cf3 ,\cf0 \ 851 | \pard\pardeftab720\partightenfactor0 852 | 853 | \f1\b \cf8 max 854 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 855 | \pard\pardeftab720\partightenfactor0 856 | 857 | \f1\b \cf2 from 858 | \f0\b0 \cf3 \cf0 \ 859 | \pard\pardeftab720\partightenfactor0 860 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 861 | \pard\pardeftab720\partightenfactor0 862 | 863 | \f1\b \cf2 group 864 | \f0\b0 \cf3 865 | \f1\b \cf2 by 866 | \f0\b0 \cf3 \cf5 1\cf6 ;\cf0 \ 867 | \ 868 | \ 869 | 870 | \f1\b \cf2 select 871 | \f0\b0 \cf3 \cf0 \ 872 | \pard\pardeftab720\partightenfactor0 873 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 874 | \pard\pardeftab720\partightenfactor0 875 | 876 | \f1\b \cf8 max 877 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 878 | \pard\pardeftab720\partightenfactor0 879 | 880 | \f1\b \cf2 from 881 | \f0\b0 \cf3 \cf0 \ 882 | \pard\pardeftab720\partightenfactor0 883 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 884 | \pard\pardeftab720\partightenfactor0 885 | 886 | \f1\b \cf2 group 887 | \f0\b0 \cf3 888 | \f1\b \cf2 by 889 | \f0\b0 \cf3 \cf5 1\cf6 ;\cf0 \ 890 | \ 891 | 892 | \f1\b \cf2 select 893 | \f0\b0 \cf3 \cf0 \ 894 | \pard\pardeftab720\partightenfactor0 895 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 896 | \pard\pardeftab720\partightenfactor0 897 | 898 | \f1\b \cf8 max 899 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 900 | \pard\pardeftab720\partightenfactor0 901 | 902 | \f1\b \cf2 from 903 | \f0\b0 \cf3 \cf0 \ 904 | \pard\pardeftab720\partightenfactor0 905 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 906 | \pard\pardeftab720\partightenfactor0 907 | 908 | \f1\b \cf2 group 909 | \f0\b0 \cf3 910 | \f1\b \cf2 by 911 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 first_name\cf3 \cf6 ;\cf0 \ 912 | \ 913 | \pard\pardeftab720\partightenfactor0 914 | \cf10 ---subquery\cf0 \ 915 | \pard\pardeftab720\partightenfactor0 916 | 917 | \f1\b \cf2 select 918 | \f0\b0 \cf3 \cf0 \ 919 | \pard\pardeftab720\partightenfactor0 920 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 921 | \cf4 em\cf3 .\cf4 salary\cf3 \cf0 \ 922 | \pard\pardeftab720\partightenfactor0 923 | 924 | \f1\b \cf2 from 925 | \f0\b0 \cf3 \cf0 \ 926 | \pard\pardeftab720\partightenfactor0 927 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 928 | \pard\pardeftab720\partightenfactor0 929 | 930 | \f1\b \cf2 where 931 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 salary\cf3 = \cf0 \ 932 | \pard\pardeftab720\partightenfactor0 933 | \cf3 (\cf0 \ 934 | \pard\pardeftab720\partightenfactor0 935 | 936 | \f1\b \cf2 select 937 | \f0\b0 \cf3 \cf0 \ 938 | \pard\pardeftab720\partightenfactor0 939 | 940 | \f1\b \cf8 max 941 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 942 | \pard\pardeftab720\partightenfactor0 943 | 944 | \f1\b \cf2 from 945 | \f0\b0 \cf3 \cf0 \ 946 | \pard\pardeftab720\partightenfactor0 947 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 948 | \pard\pardeftab720\partightenfactor0 949 | \cf3 )\cf6 ;\cf0 \ 950 | \ 951 | \pard\pardeftab720\partightenfactor0 952 | \cf10 ---correlated / synchronized \ul subquery\cf0 \ulnone \ 953 | \pard\pardeftab720\partightenfactor0 954 | 955 | \f1\b \cf2 select 956 | \f0\b0 \cf3 \cf0 \ 957 | \pard\pardeftab720\partightenfactor0 958 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 959 | \cf4 em\cf3 .\cf4 department_id\cf3 ,\cf0 \ 960 | \pard\pardeftab720\partightenfactor0 961 | 962 | \f1\b \cf8 max 963 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 964 | \pard\pardeftab720\partightenfactor0 965 | 966 | \f1\b \cf2 from 967 | \f0\b0 \cf3 \cf0 \ 968 | \pard\pardeftab720\partightenfactor0 969 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 970 | \pard\pardeftab720\partightenfactor0 971 | 972 | \f1\b \cf2 group 973 | \f0\b0 \cf3 974 | \f1\b \cf2 by 975 | \f0\b0 \cf3 \cf5 1\cf3 ,\cf5 2\cf6 ;\cf0 \ 976 | \ 977 | \ 978 | 979 | \f1\b \cf2 select 980 | \f0\b0 \cf3 \cf0 \ 981 | \pard\pardeftab720\partightenfactor0 982 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 983 | \cf4 em\cf3 .\cf4 department_id\cf3 ,\cf0 \ 984 | \cf4 em\cf3 .\cf4 salary\cf3 \cf0 \ 985 | \pard\pardeftab720\partightenfactor0 986 | 987 | \f1\b \cf2 from 988 | \f0\b0 \cf3 \cf0 \ 989 | \pard\pardeftab720\partightenfactor0 990 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 991 | \pard\pardeftab720\partightenfactor0 992 | 993 | \f1\b \cf2 where 994 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 salary\cf3 995 | \f1\b \cf2 in 996 | \f0\b0 \cf0 \ 997 | \pard\pardeftab720\partightenfactor0 998 | \cf3 ( 999 | \f1\b \cf2 select 1000 | \f0\b0 \cf3 \cf0 \ 1001 | \pard\pardeftab720\partightenfactor0 1002 | 1003 | \f1\b \cf8 max 1004 | \f0\b0 \cf3 (\cf4 em\cf3 .\cf4 salary\cf3 )\cf0 \ 1005 | \pard\pardeftab720\partightenfactor0 1006 | 1007 | \f1\b \cf2 from 1008 | \f0\b0 \cf3 \cf0 \ 1009 | \pard\pardeftab720\partightenfactor0 1010 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 1011 | \pard\pardeftab720\partightenfactor0 1012 | \cf3 )\cf6 ;\cf0 \ 1013 | \ 1014 | \pard\pardeftab720\partightenfactor0 1015 | 1016 | \f1\b \cf2 select 1017 | \f0\b0 \cf3 \cf0 \ 1018 | \pard\pardeftab720\partightenfactor0 1019 | \cf4 em\cf3 .\cf4 first_name\cf3 ,\cf0 \ 1020 | \cf4 em\cf3 .\cf4 department_id\cf3 ,\cf0 \ 1021 | \cf4 em\cf3 .\cf4 salary\cf3 \cf0 \ 1022 | \pard\pardeftab720\partightenfactor0 1023 | 1024 | \f1\b \cf2 from 1025 | \f0\b0 \cf3 \cf0 \ 1026 | \pard\pardeftab720\partightenfactor0 1027 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 em\cf0 \ 1028 | \pard\pardeftab720\partightenfactor0 1029 | 1030 | \f1\b \cf2 where 1031 | \f0\b0 \cf3 \cf4 em\cf3 .\cf4 salary\cf3 =\cf0 \ 1032 | \pard\pardeftab720\partightenfactor0 1033 | \cf3 ( 1034 | \f1\b \cf2 select 1035 | \f0\b0 \cf3 \cf0 \ 1036 | \pard\pardeftab720\partightenfactor0 1037 | 1038 | \f1\b \cf8 max 1039 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 salary\cf3 )\cf0 \ 1040 | \pard\pardeftab720\partightenfactor0 1041 | 1042 | \f1\b \cf2 from 1043 | \f0\b0 \cf3 \cf0 \ 1044 | \pard\pardeftab720\partightenfactor0 1045 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 1046 | \pard\pardeftab720\partightenfactor0 1047 | 1048 | \f1\b \cf2 where 1049 | \f0\b0 \cf3 \cf4 emp\cf3 .\cf4 department_id\cf3 = \cf4 em\cf3 .\cf4 department_id\cf3 \cf0 \ 1050 | \pard\pardeftab720\partightenfactor0 1051 | \cf3 )\cf6 ;\cf0 \ 1052 | \ 1053 | \pard\pardeftab720\partightenfactor0 1054 | \cf10 ----CTE (common table expression)\cf0 \ 1055 | \pard\pardeftab720\partightenfactor0 1056 | 1057 | \f1\b \cf2 with 1058 | \f0\b0 \cf3 \cf4 dep_wise_sal\cf3 1059 | \f1\b \cf2 as 1060 | \f0\b0 \cf0 \ 1061 | \pard\pardeftab720\partightenfactor0 1062 | \cf3 (\cf0 \ 1063 | \pard\pardeftab720\partightenfactor0 1064 | 1065 | \f1\b \cf2 select 1066 | \f0\b0 \cf3 \cf0 \ 1067 | \pard\pardeftab720\partightenfactor0 1068 | \cf4 emp\cf3 .\cf4 department_id\cf3 ,\cf0 \ 1069 | \pard\pardeftab720\partightenfactor0 1070 | 1071 | \f1\b \cf8 max 1072 | \f0\b0 \cf3 (\cf4 emp\cf3 .\cf4 salary\cf3 ) \cf4 max_sal\cf0 \ 1073 | \pard\pardeftab720\partightenfactor0 1074 | 1075 | \f1\b \cf2 from 1076 | \f0\b0 \cf3 \cf0 \ 1077 | \pard\pardeftab720\partightenfactor0 1078 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 emp\cf0 \ 1079 | \pard\pardeftab720\partightenfactor0 1080 | 1081 | \f1\b \cf2 group 1082 | \f0\b0 \cf3 1083 | \f1\b \cf2 by 1084 | \f0\b0 \cf3 \cf5 1\cf0 \ 1085 | \pard\pardeftab720\partightenfactor0 1086 | \cf3 )\cf0 \ 1087 | \pard\pardeftab720\partightenfactor0 1088 | \cf10 --,another_cte AS (), another_ct2 AS ()\cf0 \ 1089 | \pard\pardeftab720\partightenfactor0 1090 | 1091 | \f1\b \cf2 select 1092 | \f0\b0 \cf3 \cf0 \ 1093 | \pard\pardeftab720\partightenfactor0 1094 | \cf4 emps\cf3 .\cf4 first_name\cf3 ,\cf0 \ 1095 | \cf4 emps\cf3 .\cf4 salary\cf3 ,\cf0 \ 1096 | \cf4 emps\cf3 .\cf4 department_id\cf3 \cf0 \ 1097 | \pard\pardeftab720\partightenfactor0 1098 | 1099 | \f1\b \cf2 from 1100 | \f0\b0 \cf3 \cf0 \ 1101 | \pard\pardeftab720\partightenfactor0 1102 | \cf4 practice\cf3 .\cf4 employees\cf3 \cf4 \ul \ulc4 emps\cf0 \ulnone \ 1103 | \pard\pardeftab720\partightenfactor0 1104 | 1105 | \f1\b \cf2 JOIN 1106 | \f0\b0 \cf0 \ 1107 | \pard\pardeftab720\partightenfactor0 1108 | \cf4 dep_wise_sal\cf3 \cf4 dws\cf0 \ 1109 | \pard\pardeftab720\partightenfactor0 1110 | 1111 | \f1\b \cf2 ON 1112 | \f0\b0 \cf3 \cf4 emps\cf3 .\cf4 department_id\cf3 =\cf4 dws\cf3 .\cf4 department_id\cf0 \ 1113 | 1114 | \f1\b \cf2 and 1115 | \f0\b0 \cf3 \cf4 dws\cf3 .\cf4 max_sal\cf3 = \cf4 emps\cf3 .\cf4 salary\cf3 \cf0 \ 1116 | \pard\pardeftab720\partightenfactor0 1117 | \cf6 ;\cf0 \ 1118 | } -------------------------------------------------------------------------------- /sql13.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2639 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 6 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 7 | 8 | \f0\fs24 \cf0 -- ### TRANSFORMATION ----\ 9 | \ 10 | -----PIVOTING\ 11 | create table \ 12 | practice.sales \ 13 | (\ 14 | id serial,\ 15 | year int,\ 16 | amount int,\ 17 | quarter int\ 18 | );\ 19 | \ 20 | insert into practice.sales\ 21 | (year,quarter,amount)\ 22 | values \ 23 | (2023,1,300),\ 24 | (2023,2,600),\ 25 | (2023,3,400),\ 26 | (2022,3,500);\ 27 | \ 28 | SELECT\ 29 | sl.*\ 30 | from \ 31 | practice.sales sl;\ 32 | \ 33 | YEAR | Qaureter1 | Quarter2 | Quarter3\ 34 | --------------------------------------\ 35 | 2023 | 300 | 600 | 400 \ 36 | 2022 | | | 500\ 37 | \ 38 | \ 39 | \ 40 | -- tablefunc\ 41 | CREATE EXTENSION IF NOT EXISTS tablefunc;\ 42 | \ 43 | SELECT * FROM \ 44 | CROSSTAB(\ 45 | 'SELECT year, quarter, amount from practice.sales order by 1,2',\ 46 | 'SELECT DISTINCT quarter from practice.sales order by 1'\ 47 | ) AS ct\ 48 | (\ 49 | year int, Qaureter1 int, Quarter2 int, Quarter3 int\ 50 | ) order by year desc;\ 51 | \ 52 | \ 53 | \ 54 | SELECT\ 55 | year,\ 56 | -- quarter as Qaureter1,\ 57 | CASE WHEN quarter=1 THEN amount END AS Qaureter1,\ 58 | -- quarter as Quarter2,\ 59 | CASE WHEN quarter=2 THEN amount END Quarter2,\ 60 | -- quarter as Quarter3,\ 61 | CASE WHEN quarter=3 THEN amount END Quarter3,\ 62 | amount\ 63 | FROM\ 64 | practice.sales;\ 65 | \ 66 | \ 67 | \ 68 | SELECT\ 69 | year,\ 70 | -- quarter as Qaureter1,\ 71 | CASE WHEN quarter=1 THEN amount END AS Qaureter1,\ 72 | -- quarter as Quarter2,\ 73 | CASE WHEN quarter=2 THEN amount END Quarter2,\ 74 | -- quarter as Quarter3,\ 75 | CASE WHEN quarter=3 THEN amount END Quarter3\ 76 | FROM\ 77 | practice.sales;\ 78 | \ 79 | \ 80 | \ 81 | SELECT\ 82 | year,\ 83 | SUM(CASE WHEN quarter=1 THEN amount END) AS Qaureter1,\ 84 | SUM(CASE WHEN quarter=2 THEN amount END) Quarter2,\ 85 | SUM(CASE WHEN quarter=3 THEN amount END) Quarter3\ 86 | FROM\ 87 | practice.sales;\ 88 | \ 89 | \ 90 | \ 91 | SELECT\ 92 | year,\ 93 | SUM(CASE WHEN quarter=1 THEN amount END) AS Qaureter1,\ 94 | SUM(CASE WHEN quarter=2 THEN amount END) Quarter2,\ 95 | SUM(CASE WHEN quarter=3 THEN amount END) Quarter3\ 96 | -- INTO practice.sales_pivoted\ 97 | FROM\ 98 | practice.sales\ 99 | GROUP BY year\ 100 | order by year desc;\ 101 | \ 102 | \ 103 | ----UNPIVOTING \ 104 | SELECT * from practice.sales_pivoted;\ 105 | \ 106 | YEAR | AMOUNT | QUARTER \ 107 | -----------------------\ 108 | 2023 | ---- | 1\ 109 | 2023 | ---- | 2\ 110 | 2023 | ---- | 3\ 111 | 2022 | ---- | 3\ 112 | ;\ 113 | \ 114 | \ 115 | \ 116 | SELECT\ 117 | *\ 118 | FROM\ 119 | practice.sales_pivoted;\ 120 | \ 121 | SELECT\ 122 | *\ 123 | FROM\ 124 | practice.sales;\ 125 | \ 126 | \ 127 | SELECT\ 128 | sp."year",\ 129 | NULL as amount,\ 130 | sp.qaureter1,\ 131 | sp.quarter2,\ 132 | sp.quarter3\ 133 | from practice.sales_pivoted sp;\ 134 | \ 135 | \ 136 | \ 137 | SELECT\ 138 | sp."year",\ 139 | 1 AS quarter,\ 140 | sp.qaureter1 as amount,\ 141 | 2 AS quarter,\ 142 | sp.quarter2 as amount,\ 143 | 3 AS quarter,\ 144 | sp.quarter3 as amount\ 145 | from practice.sales_pivoted sp;\ 146 | \ 147 | \ 148 | \ 149 | SELECT\ 150 | sp."year",\ 151 | 1 AS quarter,\ 152 | sp.qaureter1 as amount\ 153 | from practice.sales_pivoted sp;\ 154 | \ 155 | SELECT\ 156 | sp."year",\ 157 | 2 AS quarter,\ 158 | sp.quarter2 as amount\ 159 | from practice.sales_pivoted sp;\ 160 | \ 161 | SELECT\ 162 | sp."year",\ 163 | 3 AS quarter,\ 164 | sp.quarter3 as amount\ 165 | from practice.sales_pivoted sp;\ 166 | \ 167 | \ 168 | \ 169 | SELECT\ 170 | sp."year",\ 171 | 1 AS quarter,\ 172 | sp.qaureter1 as amount\ 173 | from practice.sales_pivoted sp\ 174 | UNION ALL\ 175 | SELECT\ 176 | sp."year",\ 177 | 2 AS quarter,\ 178 | sp.quarter2 as amount\ 179 | from practice.sales_pivoted sp\ 180 | UNION ALL\ 181 | SELECT\ 182 | sp."year",\ 183 | 3 AS quarter,\ 184 | sp.quarter3 as amount\ 185 | from practice.sales_pivoted sp;\ 186 | \ 187 | \ 188 | \ 189 | SELECT\ 190 | sp."year",\ 191 | sp.qaureter1 as amount,\ 192 | 1 AS quarter\ 193 | from practice.sales_pivoted sp\ 194 | WHERE sp.qaureter1 is not null\ 195 | UNION ALL\ 196 | SELECT\ 197 | sp."year",\ 198 | sp.quarter2 as amount,\ 199 | 2 AS quarter\ 200 | from practice.sales_pivoted sp\ 201 | WHERE sp.quarter2 is not null\ 202 | UNION ALL\ 203 | SELECT\ 204 | sp."year",\ 205 | sp.quarter3 as amount,\ 206 | 3 AS quarter\ 207 | from practice.sales_pivoted sp\ 208 | WHERE sp.quarter3 is not null\ 209 | ;\ 210 | \ 211 | \ 212 | \ 213 | \ 214 | \ 215 | \ 216 | \ 217 | ---###CUSTOM DATA TYPE\ 218 | -- COMPOSITE TYPE\ 219 | ---###\ 220 | CREATE TABLE \ 221 | practice.dept \ 222 | (\ 223 | id serial,\ 224 | dept_info JSON --(dept name, manager id, dept desc)\ 225 | );\ 226 | \ 227 | -- VARCHAR,TEXT,INT,FLOAT4,JSON,,,,,,\ 228 | CREATE TYPE deptinfotype AS \ 229 | (\ 230 | dept_name varchar,\ 231 | mgr_id int,\ 232 | dept_desc text\ 233 | );\ 234 | \ 235 | CREATE TABLE \ 236 | practice.dept \ 237 | (\ 238 | id serial,\ 239 | dept_info deptinfotype, --(dept name, manager id, dept desc)\ 240 | location int\ 241 | );\ 242 | \ 243 | INSERT INTO practice.dept(dept_info,location)\ 244 | values \ 245 | (('English',765,'This dept was created for bla bla bla'),76547),\ 246 | (('BANGLA',76576,'This dept was created for this hois this'),79599),\ 247 | (('MATH',43324,'This dept was created for this hois this'),543)\ 248 | ;\ 249 | \ 250 | \ 251 | SELECT * from \ 252 | practice.dept;\ 253 | \ 254 | \ 255 | -- ENUMERATED (ENUM)\ 256 | CREATE TYPE emotion_type AS ENUM('happy','sad','nutral');\ 257 | \ 258 | CREATE TABLE practice.emotions\ 259 | (\ 260 | id serial,\ 261 | emotion emotion_type, --happy,sad,nutral\ 262 | human_name varchar);\ 263 | \ 264 | \ 265 | INSERT INTO practice.emotions(emotion ,human_name)\ 266 | VALUES \ 267 | ('happy','Mr X'),\ 268 | ('sad','Mr Y'),\ 269 | ('chill','Ms Z');\ 270 | \ 271 | -- Query 1 ERROR at Line 254: : ERROR: invalid input value for enum emotion_type: "chill"\ 272 | -- LINE 5: ('chill','Ms Z');\ 273 | -- ^\ 274 | \ 275 | \ 276 | INSERT INTO practice.emotions(emotion ,human_name)\ 277 | VALUES \ 278 | ('happy','Mr X'),\ 279 | ('sad','Mr Y'),\ 280 | ('nutral','Ms Z'),\ 281 | ('happy','Ms A');\ 282 | \ 283 | \ 284 | CREATE table practice.call_history\ 285 | (\ 286 | chid serial,\ 287 | start_time timestamp,\ 288 | end_time TIMESTAMP,\ 289 | _user int,\ 290 | created_at TIMESTAMP\ 291 | );\ 292 | \ 293 | -- ###RANGE TYPE\ 294 | \ 295 | CREATE TYPE callduration AS RANGE(subtype=time);\ 296 | \ 297 | CREATE table practice.call_history\ 298 | (\ 299 | chid serial,\ 300 | duration callduration,\ 301 | _user int,\ 302 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\ 303 | );\ 304 | \ 305 | INSERT INTO practice.call_history(duration,_user)\ 306 | values \ 307 | ('[10:20, 10:28)',5376),\ 308 | ('[09:34, 09:36)',765);\ 309 | \ 310 | \ 311 | SELECT *\ 312 | FROM \ 313 | practice.call_history\ 314 | WHERE \ 315 | duration @> '10:25'::time;\ 316 | \ 317 | -- WHERE s_time >=8987 and e_time <=85763\ 318 | \ 319 | SELECT *\ 320 | FROM \ 321 | practice.call_history\ 322 | WHERE \ 323 | duration && '[09:35,09:36)'::callduration;\ 324 | \ 325 | \ 326 | --Q&A Type\ 327 | create type practice.qatype AS (q varchar, a varchar);\ 328 | -- drop table practice.auto_generated_qa;\ 329 | create table practice.auto_generated_qa\ 330 | (\ 331 | qaid serial,\ 332 | -- question practice.qatype primary key,\ 333 | -- answer practice.qatype,\ 334 | qa practice.qatype,\ 335 | is_deleted bool DEFAULT FALSE, --FALSE/TRUE\ 336 | qa_added_by int,\ 337 | created_at timestamp DEFAULT now(),\ 338 | updated_at timestamp DEFAULT CURRENT_TIMESTAMP\ 339 | );\ 340 | \ 341 | \ 342 | INSERT INTO practice.auto_generated_qa(qa,qa_added_by)\ 343 | VALUES \ 344 | (('What''s you cat name?', 'Sequel'),67456),\ 345 | (('How old is your dog', '10 YO'),6546);\ 346 | \ 347 | \ 348 | SELECT \ 349 | (qa).a\ 350 | from practice.auto_generated_qa\ 351 | WHERE (qa).q='How old is your dog';\ 352 | \ 353 | } -------------------------------------------------------------------------------- /sql9.txt: -------------------------------------------------------------------------------- 1 | 2 | --JOIN TYPES:: 3 | inner join 4 | natural join 5 | equi join 6 | theta join 7 | self join 8 | outer join 9 | left join 10 | right join 11 | full outer 12 | cross join 13 | 14 | --============ 15 | --NATURAL JOIN 16 | select 17 | --emp.* 18 | dep.* 19 | from 20 | practice.employees emp 21 | natural join 22 | practice.department dep ; 23 | 24 | 25 | 26 | select 27 | * 28 | from 29 | practice.employees emp 30 | natural join 31 | practice.departments dep ; 32 | 33 | 34 | ---EQUI 35 | select 36 | * 37 | from 38 | practice.employees e 39 | inner join 40 | practice.departments d 41 | on e.manager = d.manager 42 | --on e.emp_no = d.manager ; 43 | 44 | 45 | select 46 | * 47 | from 48 | practice.employees e 49 | inner join 50 | practice.departments d 51 | on e.manager = d.manager 52 | and e.dep_no = d.department_id ; 53 | 54 | select 55 | * 56 | from 57 | practice.employees e 58 | inner join 59 | practice.departments d 60 | on e.manager = d.manager 61 | and e.dep_no = d.department_id::VARCHAR ; 62 | 63 | 64 | select 65 | * 66 | from 67 | practice.employees e 68 | inner join 69 | practice.departments d 70 | on e.manager = d.manager 71 | and e.dep_no = d.department_id::character varying ; 72 | ---- 73 | select 74 | * 75 | from 76 | practice.employees e 77 | inner join 78 | practice.departments d 79 | on e.manager = d.manager 80 | and e.dep_no = cast(d.department_id as varchar); 81 | 82 | 83 | select 84 | * 85 | from 86 | practice.employees e 87 | join 88 | practice.departments d 89 | on e.manager = d.manager 90 | and e.dep_no = cast(d.department_id as varchar); 91 | 92 | ---------THETA JOIN 93 | --comparison <,>, <=, >=, <>, != 94 | select 95 | * 96 | from 97 | practice.employees e 98 | join 99 | practice.departments d 100 | on e.dep_no <> d.department_id::TEXT ; 101 | 102 | --1=1 true 103 | --a = a true 104 | --a <> a true 105 | 106 | ----====OUTER 107 | --LEFT 108 | select 109 | * 110 | from 111 | practice.employees e left outer join practice.departments d 112 | on e.dep_no = d.department_id::TEXT ; 113 | 114 | select 115 | * 116 | from 117 | practice.employees e left join practice.departments d 118 | on e.dep_no = d.department_id::TEXT ; 119 | 120 | 121 | --RIGHT 122 | select 123 | * 124 | from 125 | practice.employees e RIGHT join practice.departments d 126 | on e.dep_no = d.department_id::TEXT ; 127 | 128 | select 129 | * 130 | from 131 | practice.employees e RIGHT outer join practice.departments d 132 | on e.dep_no = d.department_id::TEXT ; 133 | 134 | ---FULL 135 | select 136 | * 137 | from 138 | practice.employees e FULL outer join practice.departments d 139 | on e.dep_no = d.department_id::TEXT ; 140 | 141 | select 142 | * 143 | from 144 | practice.employees e FULL join practice.departments d 145 | on e.dep_no = d.department_id::TEXT ; 146 | 147 | ---CROSS 148 | select 149 | * 150 | from 151 | practice.employees e 152 | CROSS join 153 | practice.departments d ; 154 | 155 | --RxC= data Point (10 poisa) 156 | 157 | ---SELF 158 | --IT_STAFFS 159 | --HR_STUFS 160 | --PEONS 161 | 162 | --users 163 | select 164 | * 165 | from 166 | emp join manager on emp.manager = manager.mgr_id 167 | ; 168 | 169 | select 170 | emp.emp_no , 171 | emp.first_name , 172 | manager.emp_no manager_no, 173 | manager.first_name as manager_first_name 174 | from 175 | practice.employees emp 176 | join practice.employees manager 177 | on emp.manager = manager.emp_no 178 | ; 179 | 180 | 181 | ------------- 182 | select 183 | * 184 | from 185 | practice.employees e , 186 | practice.departments d 187 | where 188 | ---JOINS OF EMPLOYEES AND DEPRATMENTS 189 | e.manager = d.manager 190 | and e.dep_no = d.department_id::VARCHAR 191 | ----JOIN SOF X AND Y 192 | ....... 193 | .... 194 | --FILTERS 195 | ; 196 | --------------------------------------------------------------------------------