Thursday, May 28, 2026

Top SQL Queries for Practice (With Short Answers) - Subquery Queries (46–60)

 

  1. Find employees earning above average salary
    SELECT * FROM Employee
    WHERE salary > (SELECT AVG(salary) FROM Employee);
  1. Find employees earning below average salary
    SELECT * FROM Employee
    WHERE salary < (SELECT AVG(salary) FROM Employee);
  1. Find highest salary
    SELECT MAX(salary) FROM Employee;
  1. Find 2nd highest salary
    SELECT MAX(salary)
    FROM Employee
    WHERE salary < (SELECT MAX(salary) FROM Employee);
  1. Find 3rd highest salary
    SELECT MAX(salary)
    FROM Employee
    WHERE salary < (
SELECT MAX(salary)
FROM Employee
WHERE salary < (SELECT MAX(salary) FROM Employee)
    );
  1. Find employees in same department as John
    SELECT *
    FROM Employee
    WHERE dept_id = (
SELECT dept_id FROM Employee WHERE emp_name = 'John'
    );
  1. Find employees working in departments with more than 5 employees
    SELECT *
    FROM Employee
    WHERE dept_id IN (
SELECT dept_id
FROM Employee
GROUP BY dept_id
HAVING COUNT(*) > 5
    );
  1. Find customers who placed orders
    SELECT *
    FROM Customers c
    WHERE EXISTS (
SELECT 1 FROM Orders o WHERE o.customer_id = c.customer_id
    );
  1. Find customers with no orders
    SELECT *
    FROM Customers c
    WHERE NOT EXISTS (
SELECT 1 FROM Orders o WHERE o.customer_id = c.customer_id
    );
  1. Find products with price above average
    SELECT *
    FROM Products
    WHERE price > (SELECT AVG(price) FROM Products);
  1. Find department with highest avg salary
    SELECT TOP 1 department
    FROM Employee
    GROUP BY department
    ORDER BY AVG(salary) DESC;
  1. Find employees earning highest salary in each department
    SELECT *
    FROM Employee e
    WHERE salary = (
SELECT MAX(salary)
FROM Employee
WHERE dept_id = e.dept_id
    );
  1. Find duplicate names
    SELECT emp_name, COUNT(*)
    FROM Employee
    GROUP BY emp_name
    HAVING COUNT(*) > 1;
  1. Find employees hired after company avg hire date
    SELECT *
    FROM Employee
    WHERE hire_date > (SELECT AVG(hire_date) FROM Employee);
  1. Find departments with no employees using subquery
    SELECT *
    FROM Department
    WHERE dept_id NOT IN (SELECT dept_id FROM Employee);