Основы SQL
JOIN и связи
Агрегаты, подзапросы и CTE
Оконные функции
Функции, процедуры и практика
100

Что такое SQL?

A) Язык программирования

B) Язык запросов к базам данных

C) СУБД

D) Тип базы данных

B) Язык запросов к базам данных

100

Как называется ключ, который связывает таблицы?


Foreign Key.

100

Какая функция считает количество строк?

COUNT()

100

Какая функция нумерует строки?

ROW_NUMBER()

100

Чем процедура отличается от функции?

Функция возвращает значение.

200

Назовите четыре основные команды для работы с данными (CRUD).

SELECT

INSERT

UPDATE

DELETE

200

Какой JOIN покажет всех клиентов, даже если у них нет заказов?

A) INNER

B) LEFT

C) CROSS

D) SELF

LEFT JOIN

200

Что делает GROUP BY?

Объединяет строки в группы.

200

Чем оконные функции отличаются от GROUP BY?

Не уменьшают количество строк.

200

Как вызвать процедуру?

CALL procedure_name();

300

Найдите ошибку:

SELECT * 

FROM employees

ORDER BY salary

WHERE salary > 50000;

SELECT *

FROM employees

WHERE salary > 50000

ORDER BY salary;

300

Что выведет запрос?

SELECT *

FROM customers

INNER JOIN orders

ON customers.id = orders.customer_id;

Только клиентов, у которых есть заказы.

300

Что вернет запрос?

SELECT AVG(price)
FROM products;

Среднюю цену.

300

Какая функция вернет предыдущую строку?

A) NEXT

B) LEAD

C) LAG

D) BEFORE

LAG()

300

Что обязательно должно быть внутри функции?

RETURN

400

Что выведет запрос?

SELECT *

FROM products

LIMIT 3;

Первые три строки результата.

400

Найдите ошибку.

SELECT *

FROM customers

JOIN orders;

Нет условия соединения (ON).

400

Что означает ключевое слово WITH

Начало CTE (Common Table Expression).

400

Что делает PARTITION BY?

Разделяет данные на группы для вычислений.

400

Что лучше использовать?

Нужно:

  • добавить заказ;
  • уменьшить остаток товара;
  • записать действие в журнал.

Функция или процедура?

Процедура.

500

Расположите операторы в порядке выполнения:

SELECT
LIMIT
FROM
WHERE
ORDER BY

FROM → WHERE → SELECT → ORDER BY → LIMIT

500

В интернет-магазине нужно вывести всех покупателей, включая тех, которые еще ни разу ничего не заказали.

Какой тип соединения следует использовать?

A) INNER JOIN

B) LEFT JOIN

C) RIGHT JOIN

D) CROSS JOIN

B) LEFT JOIN

500

Нужно получить список сотрудников, чья зарплата выше средней по компании.

Какие варианты подойдут?

  1. Подзапрос
  2. CTE
  3. Оконная функции

Все перечисленные.

500

Что выведет запрос?

ROW_NUMBER()
OVER(
PARTITION BY department
ORDER BY salary DESC
)


Пронумерует сотрудников внутри каждого отдела по убыванию зарплаты.

500

Найдите ошибку.

CREATE FUNCTION get_sum(a INT, b INT)
BEGIN
    RETURN a + b;
END;

Отсутствует

RETURNS INT