Data Engineer (3-5 Years of Experience.) PDF
Data Engineer (3-5 Years of Experience.) PDF
Aitolla Venkatesh
---================= -- 1. Find the top 3 cities with the highest
sales per month. (sales_table): drop table ##sales Create table
##sales( sale_id int, city varchar (50), sale_date date, amount int)
insert into ##sales values (1,'Mumbai','2024-01-10','5000'),
(2,'Delhi','2024-01-15','7000'), (3,'Bangalore','2024-01-20','10000'),
(4,'Mangalore','2024-01-20','12000'), (5,'Chennai','2024-02-
05','3000'), (6,'Mumbai','2024-02-08','4000'), (7,'Patna','2024-02-
08','5000'), (7,'Mumbai','2024-03-08','5000')
with cte as
(
select city,FORMAT(sale_date,'yyyy-
MM')sale_month,SUM(amount)amt,
ROW_NUMBER()over(partition by FORMAT(sale_date,'yyyy-MM')
order by SUM(amount) desc) as rn
from ##sales
group by city,FORMAT(sale_date,'yyyy-MM')
)select * from cte where rn<=3
--2. Write an SQL query to calculate the running total of sales for
each city. (sales_data):
drop table ##sales
Create table ##sales( sale_id int, city varchar (50), sale_date date,
amount int)
insert into ##sales values
(1,'Mumbai','2024-01-10','5000'),
(2,'Delhi ','2024-01-15','7000'),
(3,'Mumbai','2024-01-20','3000'),
(4,'Delhi ','2024-02-05','6000'),
(5,'Mumbai','2024-02-08','8000')
select *,SUM(amount)over (partition by city order by
sale_date)calculatetotal from ##sales
--Method 1
with cte as
(
select *, dense_rank()over (partition by department order by
salary)rn from ##employees
)select * from cte where rn=1
---Method 2
SELECT e1.*
FROM ##employees e1
JOIN ##employees e2
ON e1.department = e2.department
AND e1.salary = e2.salary
AND e1.emp_id <> e2.emp_id
ORDER BY e1.department, e1.salary, e1.emp_id;
--5. Write an SQL query to find duplicate records in a table. (users):
create table ##users(users_id int, users_name varchar (10), email
varchar (50))
insert into ##users values
(1,'Sameer','[email protected]'),
(2,'Anjali','[email protected]'),
(3,'Sameer','[email protected]'),
(4,'Rohan','[email protected]'),
(5,'Rohan','[email protected]')
with cte as
(
select *, ROW_NUMBER()over(partition by users_name,email order
by users_name,email)rn from ##users
) --select * from cte where rn>1
--delete from cte where rn>1
select * from cte where rn=1
-- 6. Write an SQL query to delete duplicate rows while keeping only
one unique record. (Same sample data as Question 5)
with cte as
(
select *, ROW_NUMBER()over(partition by users_name,email order
by users_name,email)rn from ##users
) delete from cte where rn>1