-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQL DB2 code.txt
More file actions
207 lines (197 loc) · 5.91 KB
/
SQL DB2 code.txt
File metadata and controls
207 lines (197 loc) · 5.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
------------------------------------------
--DDL statement for table 'HR' database--
--------------------------------------------
CREATE TABLE EMPLOYEES (
EMP_ID CHAR(9) NOT NULL,
F_NAME VARCHAR(15) NOT NULL,
L_NAME VARCHAR(15) NOT NULL,
SSN CHAR(9),
B_DATE DATE,
SEX CHAR,
ADDRESS VARCHAR(30),
JOB_ID CHAR(9),
SALARY DECIMAL(10,2),
MANAGER_ID CHAR(9),
DEP_ID CHAR(9) NOT NULL,
PRIMARY KEY (EMP_ID));
CREATE TABLE JOB_HISTORY (
EMPL_ID CHAR(9) NOT NULL,
START_DATE DATE,
JOBS_ID CHAR(9) NOT NULL,
DEPT_ID CHAR(9),
PRIMARY KEY (EMPL_ID,JOBS_ID));
CREATE TABLE JOBS (
JOB_IDENT CHAR(9) NOT NULL,
JOB_TITLE VARCHAR(15) ,
MIN_SALARY DECIMAL(10,2),
MAX_SALARY DECIMAL(10,2),
PRIMARY KEY (JOB_IDENT));
CREATE TABLE DEPARTMENTS (
DEPT_ID_DEP CHAR(9) NOT NULL,
DEP_NAME VARCHAR(15) ,
MANAGER_ID CHAR(9),
LOC_ID CHAR(9),
PRIMARY KEY (DEPT_ID_DEP));
CREATE TABLE LOCATIONS (
LOCT_ID CHAR(9) NOT NULL,
DEP_ID_LOC CHAR(9) NOT NULL,
PRIMARY KEY (LOCT_ID,DEP_ID_LOC));
SELECT F_NAME, L_NAME FROM EMPLOYEES WHERE ADDRESS LIKE '%Elgin, Il%';
SELECT F_NAME, L_NAME FROM EMPLOYEES WHERE B_DATE LIKE '197%';
SELECT F_NAME, L_NAME FROM EMPLOYEES WHERE DEP_ID=5 AND (SALARY BETWEEN 60000 AND 70000);
SELECT F_NAME, L_NAME, DEP_ID FROM EMPLOYEES ORDER BY DEP_ID;
SELECT F_NAME, L_NAME, DEP_ID FROM EMPLOYEES ORDER BY DEP_ID desc, L_NAME desc;
SELECT DEP_ID, COUNT(*) AS "NUM_EMPLOYEES" FROM EMPLOYEES GROUP BY DEP_ID;
SELECT DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY" FROM EMPLOYEES GROUP BY DEP_ID;
SELECT DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY" FROM EMPLOYEES GROUP BY DEP_ID ORDER BY AVG_SALARY;
SELECT DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY" FROM EMPLOYEES GROUP BY DEP_ID HAVING COUNT(*) <4 ORDER BY AVG_SALARY;
select DEP_ID, NUM_EMPLOYEES, AVG_SALARY from (SELECT DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY" FROM EMPLOYEES GROUP BY DEP_ID) WHERE NUM_EMPLOYEES<4 ORDER BY AVG_SALARY;
SELECT D.DEP_NAME, E.F_NAME, E.L_NAME
from EMPLOYEES as E, DEPARTMENTS as D
where E.DEP_ID = D.DEPT_ID_DEP
order by D.DEP_NAME, E.L_NAME desc ;
-- Query 1------
;
select F_NAME , L_NAME
from EMPLOYEES
where ADDRESS LIKE '%Elgin,IL%' ;
--Query 2--
;
select F_NAME , L_NAME
from EMPLOYEES
where B_DATE LIKE '197%' ;
---Query3--
;
select *
from EMPLOYEES
where (SALARY BETWEEN 60000 and 70000) and DEP_ID = 5 ;
--Query4A--
;
select F_NAME, L_NAME, DEP_ID
from EMPLOYEES
order by DEP_ID;
--Query4B--
;
select F_NAME, L_NAME, DEP_ID
from EMPLOYEES
order by DEP_ID desc, L_NAME desc;
--Query5A--
;
select DEP_ID, COUNT(*)
from EMPLOYEES
group by DEP_ID;
--Query5B--
;
select DEP_ID, COUNT(*), AVG(SALARY)
from EMPLOYEES
group by DEP_ID;
--Query5C--
;
select DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY"
from EMPLOYEES
group by DEP_ID;
--Query5D--
;
select DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY"
from EMPLOYEES
group by DEP_ID
order by AVG_SALARY;
--Query5E--
;
select DEP_ID, COUNT(*) AS "NUM_EMPLOYEES", AVG(SALARY) AS "AVG_SALARY"
from EMPLOYEES
group by DEP_ID
having count(*) < 4
order by AVG_SALARY;
--5E alternative: if you want to use the label
select DEP_ID, NUM_EMPLOYEES, AVG_SALARY from
( select DEP_ID, COUNT(*) AS NUM_EMPLOYEES, AVG(SALARY) AS AVG_SALARY from EMPLOYEES group by DEP_ID)
where NUM_EMPLOYEES < 4
order by AVG_SALARY;
--BONUS Query6--
;
select D.DEP_NAME , E.F_NAME, E.L_NAME
from EMPLOYEES as E, DEPARTMENTS as D
where E.DEP_ID = D.DEPT_ID_DEP
order by D.DEP_NAME, E.L_NAME desc ;
-- Drop the PETRESCUE table in case it exists
drop table PETRESCUE;
-- Create the PETRESCUE table
create table PETRESCUE (
ID INTEGER PRIMARY KEY NOT NULL,
ANIMAL VARCHAR(20),
QUANTITY INTEGER,
COST DECIMAL(6,2),
RESCUEDATE DATE
);
-- Insert sample data into PETRESCUE table
insert into PETRESCUE values
(1,'Cat',9,450.09,'2018-05-29'),
(2,'Dog',3,666.66,'2018-06-01'),
(3,'Dog',1,100.00,'2018-06-04'),
(4,'Parrot',2,50.00,'2018-06-04'),
(5,'Dog',1,75.75,'2018-06-10'),
(6,'Hamster',6,60.60,'2018-06-11'),
(7,'Cat',1,44.44,'2018-06-11'),
(8,'Goldfish',24,48.48,'2018-06-14'),
(9,'Dog',2,222.22,'2018-06-15')
-- A1--
;
select sum(COST)
from PETRESCUE;
--A2 --
;
SELECT SUM(COST) AS SUM_OF_COST
FROM PETRESCUE;
--ABSOLUTEACCELERATION3--
;
SELECT MAX(QUANTITY)
FROM PETRESCUE;
--A4--
;
SELECT AVG(COST)
FROM PETRESCUE;
--A5--
;
SELECT AVG(COST/QUANTITY)
FROM PETRESCUE
WHERE ANIMAL='Dog'
;
--B1--
;
SELECT ROUND(COST)
FROM PETRESCUE;
--B2--
;
SELECT ANIMAL, LENGTH(ANIMAL)
FROM PETRESCUE;
--B3--
;
SELECT UCASE(ANIMAL)
FROM PETRESCUE;
--B4--
;
SELECT DISTINCT(UPPER(ANIMAL))
FROM PETRESCUE;
--B5--
;
SELECT *
FROM PETRESCUE
WHERE LCASE(ANIMAL)='cat';
--C1--
;
SELECT DAY(RESCUEDATE)
FROM PETRESCUE
WHERE ANIMAL='Cat';
--C2--
;
SELECT COUNT(*)
FROM PETRESCUE
WHERE DAY(RESCUEDATE)='05';
--C3--
;
SELECT (RESCUEDATE+3)
FROM PETRESCUE;
--C4--
SELECT (CURRENT_DATE-RESCUEDATE)
FROM PETRESCUE;