-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShaena_Schemas_HW_clean.sql
More file actions
177 lines (146 loc) · 4.16 KB
/
Shaena_Schemas_HW_clean.sql
File metadata and controls
177 lines (146 loc) · 4.16 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
-- DATA ENGINEERING:
-- 1. Create Department Table
CREATE TABLE departments(
dept_no VARCHAR(50) NOT NULL,
dept_name VARCHAR(50) NOT NULL,
PRIMARY KEY (dept_no)
);
-- 2. Create department/employee Table
SELECT * FROM departments;
CREATE TABLE dept_emp(
emp_no INTEGER NOT NULL,
dept_no VARCHAR(50) NOT NULL,
from_date VARCHAR(50) NOT NULL,
to_date VARCHAR(50) NOT NULL,
FOREIGN KEY (dept_no) REFERENCES departments(dept_no)
);
-- 3. Create Department Table
SELECT * FROM departments;
CREATE TABLE dept_manager(
dept_no VARCHAR(50) NOT NULL,
emp_no INTEGER NOT NULL,
from_date VARCHAR(50) NOT NULL,
to_date VARCHAR(50) NOT NULL,
FOREIGN KEY (dept_no) REFERENCES departments(dept_no)
);
-- 4. Create Employee Table
CREATE TABLE employees(
emp_no INTEGER NOT NULL,
birth_date VARCHAR(50) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
gender VARCHAR(50) NOT NULL,
hire_date VARCHAR(50) NOT NULL,
PRIMARY KEY (emp_no)
);
-- 5. Create Salaries Table
SELECT * FROM employees;
CREATE TABLE salaries(
emp_no INTEGER NOT NULL,
salary INTEGER NOT NULL,
from_date VARCHAR(50) NOT NULL,
to_date VARCHAR(50) NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees(emp_no)
);
-- 6. Create Titles Table
SELECT * FROM employees;
CREATE TABLE titles(
emp_no INTEGER NOT NULL,
title VARCHAR(50) NOT NULL,
from_date VARCHAR(50) NOT NULL,
to_date VARCHAR(50) NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees(emp_no)
);
-- DATA ANALYSIS
/* 1. List the following details of each employee: employee number, last name,
first name, gender, and salary. */
SELECT
employees.emp_no, employees.last_name,
employees.first_name, employees.gender, salaries.salary
FROM employees
JOIN salaries on employees.emp_no = salaries.emp_no;
/* 2. List employees who were hired in 1986. */
SELECT
*
FROM
employees
WHERE
employees.hire_date LIKE '1986%'
;
/* 3. list the manager of each department with the following information: department number,
department name, the manager's employee number, last name, first name, and start and end employment dates. */
SELECT
dept_manager.dept_no, departments.dept_name,
dept_manager.emp_no, employees.last_name, employees.first_name,
dept_manager.from_date, dept_manager.to_date
FROM
((dept_manager
INNER JOIN
departments ON dept_manager.dept_no = departments.dept_no)
INNER JOIN
employees ON employees.emp_no = dept_manager.emp_no);
/*4. List the department of each employee with the following information:
employee number, last name, first name, and department name. */
SELECT
employees.emp_no,
employees.last_name,
employees.first_name,
departments.dept_name
FROM
((dept_manager
INNER JOIN
departments ON dept_manager.dept_no = departments.dept_no)
INNER JOIN
employees ON employees.emp_no = dept_manager.emp_no);
/* 5. List all employees whose first name is "Hercules" and last names begin with "B." */
SELECT
*
FROM
employees
WHERE
employees.first_name = 'Hercules' and
employees.last_name LIKE 'B%'
;
/* 6. List all employees in the Sales department, including their employee number,
last name, first name, and department name. */
SELECT
employees.emp_no,
employees.last_name,
employees.first_name,
departments.dept_name
FROM
((dept_manager
INNER JOIN
departments ON dept_manager.dept_no = departments.dept_no)
INNER JOIN
employees ON employees.emp_no = dept_manager.emp_no)
WHERE
departments.dept_name = 'Sales'
;
/* 7. List all employees in the Sales and Development departments,
including their employee number, last name, first name, and department name. */
SELECT
employees.emp_no,
employees.last_name,
employees.first_name,
departments.dept_name
FROM
((dept_manager
INNER JOIN
departments ON dept_manager.dept_no = departments.dept_no)
INNER JOIN
employees ON employees.emp_no = dept_manager.emp_no)
WHERE
departments.dept_name = 'Sales' or
departments.dept_name = 'Development'
;
/* 8. In descending order, list the frequency count of employee last names, i.e.,
how many employees share each last name. */
SELECT
employees.last_name,
COUNT(employees.last_name) AS number_of_employees
FROM
employees
GROUP BY last_name
ORDER BY COUNT(last_name) DESC
;