β 1. Find the Second Highest Salary
Table: Employee(id, name, salary)
SELECT MAX(salary) AS SecondHighestSalary
FROM Employee
WHERE salary < (
SELECT MAX(salary) FROM Employee
);
π§ Concept: Subqueries,
MAX()
π― Asked by: Amazon, Google, Meta
β 2. Find Duplicate Records
Table: Users(id, email)
SELECT email, COUNT(*) AS cnt
FROM Users
GROUP BY email
HAVING COUNT(*) > 1;
π§ Concept: GROUP BY, HAVING
π― Asked by: Microsoft, Uber
β 3. Find Employees Who Earn More Than Their Manager
Table: Employee(id, name, salary, manager_id)
SELECT e.name
FROM Employee e
JOIN Employee m ON e.manager_id = m.id
WHERE e.salary > m.salary;
π§ Concept: Self JOIN
π― Asked by: Google, Oracle
β 4. Nth Highest Salary Using DENSE_RANK
Table: Employee(id, name, salary)
SELECT salary
FROM (
SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rnk
FROM Employee
) AS ranked
WHERE rnk = 3;
π§ Concept: Window Functions
π― Asked by: Flipkart, Salesforce
β 5. Find Customers with No Orders
Tables: Customers(customer_id), Orders(order_id, customer_id)
SELECT c.customer_id
FROM Customers c
LEFT JOIN Orders o ON c.customer_id = o.customer_id
WHERE o.order_id IS NULL;
π§ Concept: LEFT JOIN, NULL Filtering
π― Asked by: Amazon, Adobe
β 6. Get Department with Highest Average Salary
Table: Employee(id, name, salary, department_id)
SELECT department_id
FROM Employee
GROUP BY department_id
ORDER BY AVG(salary) DESC
LIMIT 1;
π§ Concept: Aggregation, ORDER BY, LIMIT
π― Asked by: Google, Paytm
β 7. Find Consecutive Login Days
Table: Login(user_id, login_date)
Find users who logged in 3 consecutive days.
SELECT DISTINCT l1.user_id
FROM Login l1
JOIN Login l2 ON l1.user_id = l2.user_id AND DATEDIFF(l2.login_date, l1.login_date) = 1
JOIN Login l3 ON l1.user_id = l3.user_id AND DATEDIFF(l3.login_date, l1.login_date) = 2;
π§ Concept: Self JOINs with date difference
π― Asked by: Amazon, Microsoft
β 8. Rank Employees within Each Department
Table: Employee(id, name, salary, department_id)
SELECT id, name, salary, department_id,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS dept_rank
FROM Employee;
π§ Concept: Partitioned Window Functions
π― Asked by: Google, Oracle
β 9. Get Cumulative Salary
Table: Employee(id, name, salary)
SELECT name, salary,
SUM(salary) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_salary
FROM Employee;
π§ Concept: Window Function with
SUM
π― Asked by: Goldman Sachs, Morgan Stanley
β 10. Find Customers Who Ordered All Products
Tables: Orders(customer_id, product_id), Products(product_id)
SELECT customer_id
FROM Orders
GROUP BY customer_id
HAVING COUNT(DISTINCT product_id) = (SELECT COUNT(*) FROM Products);
π§ Concept: COUNT DISTINCT, Subqueries
π― Asked by: Amazon, Swiggy
Top comments (0)