13. Какое из следующих выражений является примером условной агрегации в SQL?
Anonymous Quiz
79%
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END)
3%
AVG(salary)
15%
COUNT(*)
3%
MAX(age)
14. Какое из следующих выражений является примером условной группировки в SQL?
Anonymous Quiz
3%
GROUP BY city, country
85%
GROUP BY CASE (WHEN gender = 'M' THEN 'Male' ELSE 'Female' END)
13%
GROUP BY age
15. Какой пример запроса иллюстрирует использование коррелированного подзапроса для нахождения сотрудников с максимальной зарплатой в каждом отделе?
Anonymous Quiz
29%
SELECT * FROM workers WHERE salary = (SELECT MAX(salary) FROM workers)
62%
SELECT * FROM workers w WHERE salary=(SELECT MAX(salary) FROM workers WHERE depart_id=w.depart_id)
3%
SELECT * FROM workers WHERE department_id IN (SELECT depart_id FROM departments)
6%
SELECT * FROM workers WHERE salary > ALL (SELECT salary FROM workers)
16. В чем отличие между типами данных CHAR и VARCHAR в
SQL ?
SQL ?
Anonymous Quiz
24%
CHAR для строк переменной длины, VARCHAR для строк символов переменной или фиксированной длины
64%
CHAR для строк символов для строк фиксированной длины, VARCHAR для символов переменной длины
12%
CHAR для строк символов для строк переменной длины , VARCHAR для символов фиксированной длины
0%
Нет отличий
17. Какой порядок колонок должен быть в операторе GROUP BY?
Колонка A: 5,000 DISTINCT значений
Колонка B: 15,000 DISTINCT значений Колонка C: 10,000 DISTINCT значений Колонка D: 25,000 DISTINCT значений
Колонка A: 5,000 DISTINCT значений
Колонка B: 15,000 DISTINCT значений Колонка C: 10,000 DISTINCT значений Колонка D: 25,000 DISTINCT значений
Anonymous Quiz
68%
Колонка D, Колонка B, Колонка C, Колонка A
8%
Колонка A, Колонка D, Колонка C, Колонка B
5%
Колонка C, Колонка A, Колонка B, Колонка D
18%
Колонка A, Колонка C, Колонка D, Колонка B
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;
