SQL задачи
9.97K subscribers
200 photos
155 links
SQL задачи для подготовки к собеседованию.

SQL тесты для проверки знаний.

SQL запросы к конкретной Базе данных с решением и разбором

По вопросам рекламы: @anothertechrock
Download Telegram
#Задача12:

Используй схему данных
отсюда
Тестовую БД и схему БД можно также скачать - ТУТ

Определи длину строки фамилий сотрудников. Выведи два столбца:

last_name - фамилия сотрудника;
length - количество символов в фамилии.
Отсортируй результат сначала по убыванию длины фамилии, затем по фамилии.

Решение завтра.
#задача
Решение к #Задача12:

SELECT
e.last_name,
length(e.last_name) AS length
FROM employee e
ORDER BY length desc, last_name

#задача
#Задача13:

Используй схему данных
отсюда
Тестовую БД и схему БД можно также скачать - ТУТ

Выведи товары заказа (таблицы purchase_item и purchase), которые проданы по цене из каталога (таблица product_price).

Выведи столбцы:

product_id - идентификатор товара;
store_id - идентификатор магазина;
price - цена.
Для определения идентификатора магазина для товара заказа, нужно присоединить таблицу purchase.

Решение завтра.
#задача
Решение к #Задача13:

SELECT
pi.product_id,
p.store_id,
pi.price
FROM purchase_item pi
JOIN purchase p
ON p.purchase_id = pi.purchase_id

INTERSECT

SELECT pp.product_id,
pp.store_id,
pp.price
FROM product_price pp

#задача
При помощи оператора UNION нельзя объединить результаты запросов:
Anonymous Quiz
10%
содержащих подзапросы
74%
с разным числом столбцов
8%
содержащих дубликаты
7%
если запросов больше трех
#Задача14:

Используй схему данных
отсюда
Тестовую БД и схему БД можно также скачать - ТУТ

Из таблицы заказов получи информацию:

count_total - общее количество заказов;
count_employee - количество заказов, которые оформили сотрудники магазина;
count_distinct_employee - количество сотрудников магазинов, когда-либо оформивших заказ.

Решение завтра.
#задача
Решение к #Задача14:

SELECT
count(*) AS count_total,
count(employee_id) AS count_employee,
count(DISTINCT employee_id) AS count_distinct_employee
FROM purchase

#задача
#Задача15:

Используй схему данных
отсюда
Тестовую БД и схему БД можно также скачать - ТУТ

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

Для каждого сотрудника получи информацию о должностях либо магазина, в котором работает сотрудник, либо должностях с таким же индентификатором должности в другом магазине. Выведи следующие столбцы:

last_name - фамилия сотрудника;
first_name - имя сотрудника;
store_id_employee - идентификатор магазина сотрудника;
store_id_rank - идентификатор магазина должности;
rank_id - идентификатор должности в магазине;
rank_name - название должности.

Отсортируй результат по

фамилии;
имени;
идентификатору магазина должности;
идентификатору должности.

Решение завтра.
#задача
Решение к #Задача15:

SELECT
e.last_name,
e.first_name,
e.store_id as store_id_employee,
r.store_id as store_id_rank,
r.rank_id,
r.name as rank_name
FROM employee e
JOIN ranks r
ON r.store_id = e.store_id
OR (r.rank_id = e.rank_id AND r.store_id != e.store_id)
ORDER BY e.last_name, e.first_name, r.store_id, r.rank_id

#задача
Выберите пример корректно написанного запроса с использованием подзапроса, который выводит информацию о заказе с самой дорогой стоимостью:
Anonymous Quiz
6%
select * from Orders where price = (select big(price) from Orders)
7%
select * from Orders where price = max
2%
select count(*) from Orders
85%
select * from Orders where price = (select max(price) from Orders)