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

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

№ 5635948084

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

По вопросам рекламы: @anothertechrock
Download Telegram
Решение к #Задача8:

SELECT
c.name AS category_name,
p.name as product_name,
p.description
FROM category c,
product p
WHERE p.category_id = c.category_id
AND c.category_id = 1
ORDER BY p.name

#задача
#Задача9:

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

Получи декартово произведение строк таблиц часовых поясов и городов и выведи столбцы:

city_name - название города;
timezone_id_city - поле timezone_id из таблицы city;
timezone_id_timezone - поле timezone_id из таблицы timezone;
time_offset - время относительно UTC.
Отсортируй результат по названию города, затем по коду временной зоны из таблицы timezone.

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

SELECT
c.name AS city_name,
c.timezone_id AS timezone_id_city,
t.timezone_id AS timezone_id_timezone,
t.time_offset
FROM city c,
timezone t
ORDER BY c.name, t.timezone_id

#задача
#Задача10:

Используй схему данных
отсюда

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

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

Тестовая БД и схема БД можно скачать - ТУТ

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

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

#задача
Как выглядит запрос, для вывода ВСЕХ значений из таблицы Orders:
Anonymous Quiz
13%
select ALL from Orders;
4%
select % from Orders;
79%
select * from Orders;
4%
select *.Orders from Orders;
#Задача11:

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

К таблице заказов purchase присоедини таблицу товаров заказа purchase_item по идентификатору заказ purchase_id. Выведи следующие данные:

purchase_id - идентификатор заказа;
purchase_date - дата заказа;
store_id - идентификатор магазина;
product_id - идентификатор товара;
total_price - итоговая стоимость, равная количеству единиц товара умноженную на цену за единицу товара.
Отсортируй результат сначала по идентификатору магазина, затем по дате заказа по убыванию.

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

SELECT
p.purchase_id,
p.purchase_date,
p.store_id,
pi.product_id,
pi.count * pi.price as total_price
FROM purchase p
JOIN purchase_item pi
ON pi.purchase_id = p.purchase_id
ORDER BY p.store_id, p.purchase_date DESC

#задача
Какая строковая функция отвечает за склейку строк?
Anonymous Quiz
1%
LOWER()
2%
CHAR()
94%
CONCAT()
3%
REPLACE()
Друзья, напишите что бы вы добавили или исправили в контенте нашего канала?

Все пожелания в комментарии под постом.

Также мы ищем заинтересованного SQL человека, который бы хотел добавлять контент-тесты в наш канал. Все желающие, напишите пожалуйста пару примеров тестов и пришлите их сюда: @aldrson.
#Задача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

#задача