SQL для тестировщика: 20 запросов на собеседованиях

SQL часто встречается в вакансиях Manual QA и на технических собеседованиях. Обычно от тестировщика ждут умения найти данные, проверить результат операции, соединить таблицы и найти дубли.

Если вы уже указали SQL, Postman, API и другие навыки в резюме, стоит проверить, насколько убедительно они там представлены. В updatecv.me можно бесплатно загрузить резюме и посмотреть, какие навыки раскрыты слабо и что стоит улучшить перед откликами.

→ Проверить резюме

А теперь — 20 SQL-запросов, которые полезно уметь написать и объяснить на собеседовании.

Для примеров используем две таблицы:

users
-----
id
name
email
phone
status
created_at
orders
------
id
user_id
amount
status
created_at

1. Получить всех пользователей

SELECT *
FROM users;

2. Получить нужные поля

SELECT id, name, email
FROM users;

3. Найти пользователя по ID

SELECT *
FROM users
WHERE id = 125;

4. Найти активных пользователей

SELECT *
FROM users
WHERE status = 'active';

5. Найти пользователей по email

SELECT *
FROM users
WHERE email LIKE '%gmail.com%';

6. Найти пользователей без телефона

SELECT *
FROM users
WHERE phone IS NULL;

Для NULL используются IS NULL и IS NOT NULL.

7. Посчитать пользователей

SELECT COUNT(*)
FROM users;

8. Посчитать пользователей по статусам

SELECT status, COUNT(*)
FROM users
GROUP BY status;

9. Найти статусы, где больше 10 пользователей

SELECT status, COUNT(*)
FROM users
GROUP BY status
HAVING COUNT(*) > 10;

WHERE фильтрует строки, HAVING — группы.

10. Получить уникальные статусы

SELECT DISTINCT status
FROM users;

11. Найти 5 самых дорогих заказов

SELECT *
FROM orders
ORDER BY amount DESC
LIMIT 5;

12. Получить заказы вместе с пользователями

SELECT
    orders.id,
    orders.amount,
    users.name
FROM orders
JOIN users
    ON orders.user_id = users.id;

13. Найти пользователей без заказов

SELECT users.*
FROM users
LEFT JOIN orders
    ON users.id = orders.user_id
WHERE orders.id IS NULL;

14. Найти заказы без существующего пользователя

SELECT orders.*
FROM orders
LEFT JOIN users
    ON orders.user_id = users.id
WHERE users.id IS NULL;

Полезная QA-проверка целостности данных.

15. Посчитать сумму заказов каждого пользователя

SELECT
    user_id,
    SUM(amount)
FROM orders
GROUP BY user_id;

16. Найти пользователей, потративших больше 1000

SELECT
    users.id,
    users.name,
    SUM(orders.amount) AS total_amount
FROM users
JOIN orders
    ON users.id = orders.user_id
GROUP BY users.id, users.name
HAVING SUM(orders.amount) > 1000;

17. Найти заказы дороже среднего

SELECT *
FROM orders
WHERE amount > (
    SELECT AVG(amount)
    FROM orders
);

18. Найти дубли email

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

Одна из самых полезных SQL-проверок для QA.

19. Найти вторую максимальную сумму заказа

SELECT MAX(amount)
FROM orders
WHERE amount < (
    SELECT MAX(amount)
    FROM orders
);

20. Найти последний заказ каждого пользователя

WITH ranked_orders AS (
    SELECT
        *,
        ROW_NUMBER() OVER (
            PARTITION BY user_id
            ORDER BY created_at DESC
        ) AS rn
    FROM orders
)

SELECT *
FROM ranked_orders
WHERE rn = 1;

Это уже более продвинутый пример с оконной функцией.

Что еще могут спросить на собеседовании

Стоит уметь объяснить:

  • WHERE и HAVING;
  • INNER JOIN и LEFT JOIN;
  • NULL;
  • GROUP BY;
  • COUNT, SUM, AVG;
  • primary key и foreign key;
  • DELETE, TRUNCATE и DROP.

Для Manual QA обычно достаточно уверенно знать SELECT, WHERE, LIKE, IN, ORDER BY, GROUP BY, HAVING, JOIN, агрегатные функции и простые подзапросы.

Как указать SQL в резюме

Не стоит писать:

SQL — Advanced

если на практике вы используете только простые SELECT.

Лучше конкретно:

SQL: SELECT, JOIN, GROUP BY, агрегатные функции, подзапросы.

Так работодателю проще понять ваш реальный уровень.

А если хотите проверить не только SQL, но и то, насколько хорошо в резюме представлены API, Postman и другие QA-навыки, загрузите его в updatecv.me.

→ Проверить резюме перед откликами

Главное при подготовке к собеседованию — не заучивать запросы, а понимать, почему они работают.

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *