DATA Analyst | 1000 Interview questions
167 subscribers
6 photos
2 links
Download Telegram
SELECT * FROM employees WHERE salary = NULL;
№25 категория вопросов: #SQL # RECURSIVE_QUERY #Middle
WITH RECURSIVE NumberSeries AS 
( SELECT 1 AS number
UNION ALL
SELECT number + 1 FROM NumberSeries
WHERE number < 5 )
SELECT * FROM NumberSeries;
25. Какой результат вернёт рекурсивный запрос выше?
Anonymous Quiz
36%
A) 1, 2, 3, 4, 5
44%
B) 1, 2, 3, 4
20%
C) 1, 2, 3, 4, 5, 6
0%
D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Совет для аналитиков: избегайте использования SELECT * в запросах
В недавнем опросе среди аналитиков на тему использования SELECT * результаты показали:
• 39% считают, что это упрощает запросы
• 48% полагают, что это увеличивает объем передаваемых данных
• 4% думают, что это ускоряет выполнение запросов
• 9% считают, что это упрощает чтение кода

SELECT * возвращает все столбцы таблицы, включая те, которые могут быть не нужны для анализа. Это увеличивает объем передаваемых данных и может замедлить выполнение запроса. Запросы с SELECT * могут быть менее оптимизированы, так как база данных должна обрабатывать больше данных, чем необходимо. Явное указание необходимых столбцов делает код более читаемым и поддерживаемым. Это также помогает избежать неожиданных изменений в структуре таблицы, которые могут повлиять на результаты запроса.
-- Плохая практика
SELECT * FROM employees; 

-- Хорошая практика
SELECT id, name, salary FROM employees;  

Всегда указывайте только те столбцы, которые вам действительно нужны для анализа. Это улучшит производительность запросов и сделает ваш код более понятным.
👍4
№25 категория вопросов: #SQL # NULL_HANDLING #Junior
SELECT * FROM employees 
WHERE salary IN (NULL,
50000, 60000);
№26 категория вопросов: #SQL # CORRELATED_SUBQUERY #Middle
SELECT t1.id, 
(SELECT SUM(value) FROM transactions t2 WHERE t2.customer_id = t1.id AND t2.transaction_date <= t1.transaction_date) AS daily_balance
FROM transactions t1;
№27 категория вопросов: #SQL # CORRELATED_SUBQUERY #Middle
A)
SELECT id, salary, 
(SELECT COUNT(*) FROM employees e2 WHERE e2.salary >= e1.salary) AS rank
FROM employees e1;

B)
 
SELECT id, salary,
(SELECT COUNT(*) FROM employees WHERE salary < e.salary) AS rank
FROM employees e;

C)
SELECT id, salary, 
(SELECT COUNT(*) FROM employees WHERE salary >= salary) AS rank
FROM employees;

D)
SELECT id, salary, 
(SELECT COUNT(*) FROM employees e2 WHERE e2.salary < e.salary) AS rank
FROM employees e;
27. Какой из запросов выше корректно использует коррелированный подзапрос для создания нового столбца с нумерацией сотрудников в зависимости от их зарплаты?
Anonymous Quiz
52%
A)
19%
B)
14%
C)
14%
D)
№28 категория вопросов: #SQL # CORRELATED_SUBQUERY #Middle
SELECT e.id, e.name, 
(SELECT AVG(salary) FROM employees e2 WHERE e2.department_id = e.department_id) AS avg_department_salary
FROM employees e;
№29 категория вопросов: #SQL # JOIN #Junior
Даны две таблицы
Таблица t1

| a1 |
|-------- |
| 2 |
| 4 |
| 4 |
| 5 |
| null |

Таблица t2
-----------
| a2 |
|---------|
| 2 |
| 2 |
| 4 |
| 4 |
| 7 |
| null |
| null |