DATA Analyst | 1000 Interview questions
168 subscribers
6 photos
2 links
Download Telegram
№17 категория вопросов: #SQL #GROUPING #PRODUCTIVITY #Middle
№18 категория вопросов: #SQL #GROUPING #GROUPING #Junior
№19 категория вопросов: #SQL #GROUPING #Middle
SARGable (краткое от "Search ARGument ABLE") — это термин, который означает, насколько эффективно запрос может использовать индексы для поиска данных. Проще говоря, когда запрос является SARGable, он написан таким образом, что база данных может быстро найти нужные записи, используя индексы, что обычно ускоряет выполнение запроса.

Примеры SARGable и не SARGable запросов:

1. SARGable запрос:
   SELECT * FROM products WHERE price > 100;

- В этом случае индекс на столбце price может быть использован для быстрого поиска.

2. Не SARGable запрос:
   SELECT * FROM products WHERE YEAR(order_date) = 2023;

- Здесь функция YEAR() применяется к столбцу order_date, что делает невозможным использование индекса. База данных сначала должна обработать все записи, что замедляет выполнение запроса.

Чтобы ваши запросы были более эффективными, старайтесь писать их SARGable, избегая использования функций или операторов, которые мешают базе данных использовать индексы.
👍5
№20 категория вопросов: #SQL #PRODUCTIVITY #Middle
A.
   SELECT OrderID, Customer, Product, Date
FROM orders
WHERE OrderID IN (
SELECT MAX(OrderID)
FROM orders
GROUP BY Customer, Product
);

B.
   SELECT OrderID, Customer, Product, Date
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Customer, Product ORDER BY OrderID DESC) AS rn
FROM orders
) AS subquery
WHERE rn = 1;

C.
   SELECT OrderID, Customer, Product, Date, ROW_NUMBER() OVER (PARTITION BY Customer, Product ORDER BY OrderID DESC) AS rn
FROM orders
WHERE rn = 1;
20. В таблице orders необходимо найти и вывести последние данные заказов (OrderID, Customer, Product, Date) без дубликатов по клиенту и продукту (последние данные имеют максимальный OrderID). Какой из следующих SQL-запросов корректно решает эту задачу?
Anonymous Quiz
55%
A
16%
B
3%
C
26%
A и B
№21 категория вопросов: #SQL #CASE #Junior
A.
sql
Копировать код
SELECT ename, sal,
CASE
WHEN sal < 2000 THEN 'UNDERPAID'
WHEN sal > 4000 THEN 'OVERPAID'
ELSE 'OK'
END AS status
FROM employees;

B.
SELECT ename, sal, 
CASE
WHEN sal <= 2000 THEN 'UNDERPAID'
WHEN sal >= 4000 THEN 'OVERPAID'
ELSE 'OK'
END AS status
FROM employees;

C.
SELECT ename, sal, 
CASE
WHEN sal < 2000 THEN 'UNDERPAID'
WHEN sal >= 4000 THEN 'OVERPAID'
WHEN sal > 2000 AND sal < 4000 THEN 'OK'
END AS status
FROM employees;

D
SELECT ename, sal, 
CASE
WHEN sal <= 2000 THEN 'UNDERPAID'
WHEN sal > 2000 AND sal < 4000 THEN 'OK'
ELSE 'OVERPAID'
END AS status
FROM employees;
21. В SQL-запрос необходимо добавить колонку STATUS в таблицу сотрудников, где:
зарплата $2000 и ниже — статус UNDERPAID;
зарплата $4000 и выше — статус OVERPAID; зарплата от $2000 до $4000 (не включая границы) — статус OK. Какой из запросов правильный?
Anonymous Quiz
13%
A
65%
B
6%
C
16%
D
A.
SELECT * FROM employees ORDER BY department, salary;

B.
SELECT * FROM employees ORDER BY department ASC, salary DESC;

C.
SELECT * FROM employees ORDER BY department DESC, salary ASC;

D.
SELECT * FROM employees ORDER BY salary DESC, department ASC;
№22 категория вопросов: #SQL #SORTING #Junior
22. Как отсортировать таблицу employees сначала по полю department в алфавитном порядке, а затем по полю salary в порядке убывания?
Anonymous Quiz
6%
A
82%
B
12%
C
0%
D
№23 категория вопросов: #SQL # NULL_HANDLING #Junior
SELECT COUNT(*) FROM employees WHERE salary > 50000;
№24 категория вопросов: #SQL # NULL_HANDLING #Junior
SELECT * FROM employees WHERE salary = NULL;