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.
→ Проверить резюме перед откликами
Главное при подготовке к собеседованию — не заучивать запросы, а понимать, почему они работают.
