所有文章

Top 50 SQL Interview Queries You Must Know

2026-03-0418 分钟阅读

SQL is a must-have skill for Data Engineers, Backend Developers, and Data Analysts. Here are the key queries asked in interviews.

Basic Queries

1. Find Duplicates

SELECT email, COUNT(*) AS cnt
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

2. Second Highest Value

SELECT MAX(salary) FROM employees
WHERE salary < (SELECT MAX(salary) FROM employees);

Or with a window function:

SELECT salary FROM (
  SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rk
  FROM employees
) t WHERE rk = 2;

3. Nth Record

SELECT * FROM (
  SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn
  FROM employees
) t WHERE rn = 5;

JOIN Tasks

4. Employees Without a Department

SELECT e.name FROM employees e
LEFT JOIN departments d ON e.dept_id = d.id
WHERE d.id IS NULL;

5. Departments Without Employees

SELECT d.name FROM departments d
LEFT JOIN employees e ON d.id = e.dept_id
WHERE e.id IS NULL;

Aggregation

6. Top 3 Salaries per Department

SELECT * FROM (
  SELECT name, department, salary,
    ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
  FROM employees
) t WHERE rn <= 3;

7. Running Total

SELECT date, amount,
  SUM(amount) OVER (ORDER BY date) AS running_total
FROM orders;

Date Operations

8. Users Active 3 Consecutive Days

SELECT DISTINCT user_id FROM (
  SELECT user_id, login_date,
    login_date - ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date)::int AS grp
  FROM logins
) t
GROUP BY user_id, grp
HAVING COUNT(*) >= 3;

Interview Tips

  • Always clarify: are there NULLs, are values unique, which SQL dialect
  • Start with a simple solution, then optimize
  • Think out loud — interviewers care about your thought process
  • Know the difference between WHERE and HAVING, RANK and DENSE_RANK

现在就练习 SQL — 500+ 题目即时验证

免费开始