18. Какое из следующих утверждений верно о группировке при объединении таблиц?
Anonymous Quiz
14%
Группировка должна быть выполнена до объединения таблиц
86%
Группировка выполняется на результирующем наборе после объединения
0%
Группировка и объединение не могут использоваться вместе
19. Какой запрос позволяет сосчитать сотрудников с зарплатой выше 50,000 в каждом отделе
Anonymous Quiz
51%
SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department
37%
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING salary > 50000
12%
SELECT department, COUNT(*) FROM employees HAVING salary > 50000 GROUP BY department
0%
SELECT department, COUNT(*) FROM employees WHERE salary > 50000 HAVING COUNT(*) > 10
SARGable (краткое от "Search ARGument ABLE") — это термин, который означает, насколько эффективно запрос может использовать индексы для поиска данных. Проще говоря, когда запрос является SARGable, он написан таким образом, что база данных может быстро найти нужные записи, используя индексы, что обычно ускоряет выполнение запроса.
Примеры SARGable и не SARGable запросов:
1. SARGable запрос:
- В этом случае индекс на столбце price может быть использован для быстрого поиска.
2. Не SARGable запрос:
- Здесь функция YEAR() применяется к столбцу order_date, что делает невозможным использование индекса. База данных сначала должна обработать все записи, что замедляет выполнение запроса.
Чтобы ваши запросы были более эффективными, старайтесь писать их 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
A.
B.
C.
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
A.
B.
C.
D
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. Какой из запросов правильный?
зарплата $2000 и ниже — статус UNDERPAID;
зарплата $4000 и выше — статус OVERPAID; зарплата от $2000 до $4000 (не включая границы) — статус OK. Какой из запросов правильный?
Anonymous Quiz
13%
A
65%
B
6%
C
16%
D
A.
B.
C.
D.
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. Как отсортировать таблицу employees сначала по полю department в алфавитном порядке, а затем по полю salary в порядке убывания?
Anonymous Quiz
6%
A
82%
B
12%
C
0%
D
SELECT COUNT(*) FROM employees WHERE salary > 50000;
23. Какое из следующих утверждений верно о влиянии NULL на результаты выборки данных в SQL?
Anonymous Quiz
31%
Количество всех строк в таблице employees, где salary больше 50000, включая строки с NULL.
52%
Количество всех строк в таблице employees, где salary больше 50000, исключая строки с NULL.
10%
Количество всех строк в таблице employees, включая строки с NULL.
7%
Количество всех строк в таблице employees, где salary > 50000, включая строки с NULL.
24. Что произойдёт, если в запросе используется условие с NULL?
Anonymous Quiz
3%
A) Запрос вернёт все строки из таблицы employees.
80%
B) Запрос вернёт только строки, где salary равно NULL.
17%
C) Запрос не вернёт ни одной строки.
0%
D) Запрос вернёт все строки, исключая строки с NULL.