-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRevision_Practice_SQL.sql
More file actions
225 lines (162 loc) · 3.95 KB
/
Copy pathRevision_Practice_SQL.sql
File metadata and controls
225 lines (162 loc) · 3.95 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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
CREATE DATABASE IF NOT EXISTS practice;
USE practice;
# emp table
CREATE TABLE emp(
emp_id INT PRIMARY KEY,
name VARCHAR(20),
department VARCHAR(50),
salary DOUBLE NOT NULL,
hire_date date NOT NULL
);
INSERT INTO emp VALUES
(1,"Alice", "IT", 70000,"2024-01-15"),
(2,"Bob", "HR", 45000,"2023-06-10"),
(3,"Charlie", "IT", 80000,"2022-08-20"),
(4,"David", "Finance", 60000,"2024-03-12"),
(5,"Emma", "HR", 50000,"2025-01-05"),
(6,"Frank", "IT", 90000,"2021-11-11"),
(7,"Grace", "Finance", 75000,"2023-09-18"),
(8,"Henry", "Marketing", 55000,"2024-05-25");
SELECT * FROM emp;
# cust table
CREATE TABLE cust(
cust_id INT PRIMARY KEY,
cust_name VARCHAR(30),
city VARCHAR(40)
);
INSERT INTO cust VALUES
(101,"Rahul","Nagpur"),
(102,"Priya","Mumbai"),
(103,"Aman","Pune"),
(104,"Sneha","Nagpur"),
(105,"Karan","Delhi");
SELECT * FROM cust;
# orders table
CREATE TABLE orders(
order_id INT PRIMARY KEY,
cust_id INT,
order_date DATE NOT NULL,
amt DOUBLE
);
INSERT INTO orders VALUES
(1001,101,"2025-01-10",1200),
(1002,102,"2025-01-11",2500),
(1003,101,"2025-01-15",1800),
(1004,103,"2025-02-01",3200),
(1005,104,"2025-02-05",1500),
(1006,101,"2025-02-08",2100),
(1007,102,"2025-02-10",2700);
SELECT * FROM orders;
# dept table
CREATE TABLE dept(
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50)
);
INSERT INTO dept VALUES
(1,"IT"),
(2,"HR"),
(3,"Finance"),
(4,"Marketing");
SELECT * FROM dept;
############################################
-- 1. Display all employees.
SELECT * FROM emp;
-- Display employee names and salaries only.
SELECT name, salary
FROM emp;
-- 3. Find employees earning more than 60,000.
SELECT *
FROM emp
WHERE salary > 60000;
-- 4. Find employees working in the IT department.
SELECT *
FROM emp
WHERE department = "IT";
-- 5. Sort employees by salary descending.
SELECT *
FROM emp
ORDER BY salary DESC;
-- 6. Find the highest-paid employee.
SELECT name, salary
FROM emp
ORDER BY salary DESC
LIMIT 1;
-- 7. Count total employees.
SELECT COUNT(*) AS total_emps
FROM emp;
-- 8. Find average salary department-wise.
SELECT department, AVG(salary) AS avg_salary
FROM emp
GROUP BY department;
-- 9. Find employees hired after 2024-01-01.
SELECT *
FROM emp
WHERE hire_date > "2024-01-01";
-- Find employees whose names start with 'A'.
SELECT *
FROM emp
WHERE name LIKE 'A%';
-- 11. Count employees in each department.
SELECT department, COUNT(department)
FROM emp
GROUP BY department;
-- 12. Find departments with average salary greater than 65,000.
SELECT department, AVG(salary)
FROM emp
GROUP BY department
HAVING AVG(salary) > 65000;
-- 13. Find customers from Nagpur.
SELECT *
FROM cust
WHERE city = "Nagpur";
-- 14. Find total order amount for each customer.
SELECT c.cust_name, COALESCE(SUM(o.amt),0) AS total_amount
FROM cust c
LEFT JOIN orders o
ON c.cust_id = o.cust_id
GROUP BY c.cust_name;
-- 15. Find customers who never placed an order.
SELECT c.cust_name, COALESCE(o.order_date,0), COALESCE(o.amt,0)
FROM cust c
LEFT JOIN orders o
ON c.cust_id = o.cust_id
WHERE o.cust_id IS NULL;
-- 16. Find the customer with the highest purchase amount.
SELECT c.cust_name,SUM(o.amt) AS total_amt
FROM cust c
LEFT JOIN orders o
ON c.cust_id = o.cust_id
GROUP BY c.cust_name
ORDER BY total_amt DESC
LIMIT 1;
-- 17. Find the second-highest salary.
SELECT *
FROM emp
ORDER BY salary DESC
LIMIT 1,1;
-- 18. Find employees earning above average salary.
SELECT *
FROM emp
WHERE salary > (SELECT AVG(salary) FROM emp);
-- 19. Join Employees and Departments.
SELECT *
FROM emp e
LEFT JOIN dept d
ON e.emp_id = d.dept_id
UNION
SELECT *
FROM emp e
RIGHT JOIN dept d
ON e.emp_id = d.dept_id;
-- 20. Find duplicate cities in Customers table
SELECT city, COUNT(city) AS city_count
FROM cust
GROUP BY city
HAVING city_count >= 2;
-- 25. Create a view for employee details with department information.
CREATE VIEW emp_dept_view AS
SELECT e.emp_id, e.name, e.salary, e.hire_date, COALESCE(d.dept_name,0)
FROM emp e
LEFT JOIN dept d
ON e.emp_id = d.dept_id;
SELECT * FROM emp_dept_view;