Отточите свои навыки SQL с помощью наших интерактивных упражнений! Практикуйте широкий спектр SQL-задач, от базовых запросов до сложных техник. Получайте мгновенную обратную связь на свои решения, чтобы учиться на ошибках и совершенствовать свои навыки. Увеличьте свою уверенность для собеседований и реальных приложений SQL.
Доходы от рекламы и пожертвования являются нашими единственными источниками финансирования. Пожалуйста, не отключайте рекламу или внесите посильное пожертвование. Спасибо за Вашу поддержку! 🙏🌟
🎉 Друзья! Рады представить вам наш новый образовательный проект – открытый онлайн-учебник по SQL!
📚 За основу мы взяли проект Querynomicon, который планируем не только перевести, но и адаптировать под потребности русскоязычной аудитории. В перспективе мы хотим развить его до полноценного интерактивного учебника.
🤝 И здесь нам нужна ваша помощь! Проект размещен в открытом Git-репозитории, что позволяет каждому внести свой вклад в его развитие:
Сделайте форк проекта
Внесите свои изменения или дополнения
Отправьте pull request
✅ Все предложения будут внимательно рассмотрены и после модерации добавлены в основной репозиторий.
💡 Давайте вместе создадим качественный ресурс для изучения SQL!
Создайте запрос SQL, чтобы найти клиентов, которые взяли напрокат больше фильмов, чем среднее количество прокатов среди всех клиентов. Используйте подзапрос для расчета среднего количества аренд.
Результирующая таблица должна содержать следующие столбцы: customer_id – уникальный идентификатор клиента, first_name – имя клиента, last_name — фамилия клиента.
rental_count — количество взятых напрокат фильмов
Напишите ваш запрос в поле ниже и нажмите кнопку "Проверить!"
Для написания ответа используйте синтаксис MySQL. Описания таблиц приведены в правой панели.
Sakila - это пример базы данных, разработанный компанией MySQL, специально созданный для обучения и демонстрации возможностей систем управления базами данных (СУБД) на основе реляционной модели.
База данных Sakila содержит 15 основных таблиц, описывающих различные аспекты компании по прокату DVD-дисков.
Ниже приведен список этих таблиц:
actor - таблица актеров.
address - таблица адресов клиентов и сотрудников.
category - таблица категорий фильмов.
city - таблица городов.
country - таблица стран.
customer - таблица клиентов в базе данных Sakila.
film - таблица фильмов в базе данных Sakila.
film_actor - таблица связи актеров и фильмов.
film_category - таблица связи фильмов и категорий.
inventory - таблица товаров в базе данных Sakila.
language - таблица языков фильмов.
payment - таблица платежей клиентов.
rental - таблица аренды клиентов.
staff - таблица сотрудников компании.
store - таблица магазинов компании.
Таблица actor
Колонки:
actor_id - уникальный идентификатор для каждого актера.
first_name - имя актера.
last_name - фамилия актера.
last_update - временная метка создания или последнего обновления строки.
actor_id
first_name
last_name
last_update
1
John
Doe
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (actor_id)
Таблица address
Колонки:
address_id - уникальный идентификатор для каждого адреса.
address – почтовый адрес.
address2 – дополнительный адрес.
district – район или регион.
city_id - внешний ключ, ссылающийся на таблицу городов.
postal_code – почтовый индекс.
phone – номер телефона.
last_update - временная метка создания или последнего обновления строки.
address_id
address
address2
district
city_id
postal_code
phone
last_update
1
123 Main St
[null]
Downtown
1
12345
+1234567890
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (address_id)
Таблица category
Колонки:
category_id – уникальный идентификатор для каждой категории.
name - название категории.
last_update - временная метка создания или последнего обновления строки.
category_id
name
last_update
1
Action
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (category_id)
Таблица city
Колонки:
city_id – уникальный идентификатор для каждого города.
city - название города.
country_id - внешний ключ, ссылающийся на таблицу стран.
last_update - временная метка создания или последнего обновления строки.
city_id
city
country_id
last_update
1
Metropolis
1
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (city_id)
Таблица country
Колонки:
country_id – уникальный идентификатор для каждой страны.
country – название страны.
last_update - временная метка создания или последнего обновления строки.
country_id
country
last_update
1
United States
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (country_id)
Таблица customer
Колонки:
customer_id – уникальный идентификатор для каждого клиента.
store_id - внешний ключ, ссылающийся на таблицу магазина.
first_name – имя клиента.
last_name – фамилия клиента.
email – адрес электронной почты клиента.
address_id - внешний ключ, ссылающийся на таблицу адресов.
active – указывает, активен ли клиент.
create_date - временная метка, указывающая, когда клиент был добавлен в базу данных.
last_update - временная метка создания или последнего обновления строки.
customer_id
store_id
first_name
last_name
email
address_id
active
create_date
last_update
1
1
John
Doe
john.doe@example.com
1
true
2023-01-01 12:00:00
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (customer_id)
Таблица film
Колонки:
film_id – уникальный идентификатор каждого фильма.
title — название фильма.
description – краткое описание или сюжет фильма.
release_year — год выхода фильма.
language_id — внешний ключ, ссылающийся на таблицу language - определяет язык фильма.
original_language_id — внешний ключ, указывающий на таблицу language - определяет язык оригинала фильма. Используется, когда фильм дублирован на новый язык.
rental_duration — продолжительность периода аренды в днях.
rental_rate — стоимость проката фильма на период, указанный в столбце rental_duration.
length — продолжительность фильма в минутах.
replacement_cost — сумма, взимаемая с покупателя, если пленка не возвращена или возвращена в поврежденном состоянии.
rating — рейтинг, присвоенный фильму. Может быть одним из: G, PG, PG-13, R или NC-17.
special_features — список общих специальных функций, включенных в DVD. Может быть ноль или более: трейлеры, комментарии, удаленные сцены, за кадром.
last_update — временная метка создания или последнего обновления строки.
film_id
title
description
release_year
language_id
original_language_id
rental_duration
rental_rate
length
replacement_cost
rating
special_features
last_update
1
Film Title
A brief description of the film.
2000
1
2
5
4.99
120
19.99
PG-13
Trailers, Commentaries
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (film_id)
Таблица film_actor
Колонки:
actor_id – уникальный идентификатор актера.
film_id – уникальный идентификатор фильма.
last_update - временная метка создания или последнего обновления строки.
actor_id
film_id
last_update
1
1
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (actor_id, film_id)
Таблица film_category
Колонки:
film_id – уникальный идентификатор каждого фильма.
category_id – уникальный идентификатор для каждой категории.
last_update - временная метка создания или последнего обновления строки.
film_id
category_id
last_update
1
1
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (film_id, category_id)
Таблица inventory
Колонки:
inventory_id – уникальный идентификатор для каждого элемента.
film_id – уникальный идентификатор каждого фильма в таблице.
store_id – уникальный идентификатор магазина, в котором находится товар.
last_update — временная метка последнего изменения записи.
inventory_id
film_id
store_id
last_update
1
23
2
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (inventory_id)
Таблица language
Колонки:
language_id - уникальный идентификатор для каждого языка.
name - название языка.
last_update - временная метка создания или последнего обновления строки.
language_id
name
last_update
1
English
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (language_id)
Таблица payment
Колонки:
payment_id – уникальный идентификатор для каждого платежа.
customer_id - внешний ключ, ссылающийся на таблицу клиентов.
staff_id - внешний ключ, ссылающийся на таблицу персонала.
rental_id - внешний ключ, ссылающийся на таблицу аренды.
amount – сумма платежа.
payment_date – дата платежа.
last_update - временная метка создания или последнего обновления строки.
payment_id
customer_id
staff_id
rental_id
amount
payment_date
last_update
1
1
1
1
4.99
2023-01-01 12:13:14
2023-01-01 12:14:15
Индексы:
PRIMARY KEY, btree (payment_id)
Таблица rental
Колонки:
rental_id – уникальный идентификатор для каждой аренды.
rental_date – дата, когда произошла аренда.
inventory_id - внешний ключ, ссылающийся на таблицу инвентаризации.
customer_id - внешний ключ, ссылающийся на таблицу клиентов.
return_date – дата возврата взятого напрокат имущества.
staff_id - внешний ключ, ссылающийся на таблицу персонала.
last_update - временная метка создания или последнего обновления строки.
rental_id
rental_date
inventory_id
customer_id
return_date
staff_id
last_update
1
2023-01-01 16:15:21
1
1
2023-01-10 09:12:36
1
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (rental_id)
Таблица staff
Колонки:
staff_id – уникальный идентификатор каждого сотрудника.
first_name – имя сотрудника.
last_name - фамилия сотрудника.
address_id - внешний ключ, ссылающийся на таблицу адресов.
picture – изображение сотрудника.
email - адрес электронной почты сотрудника.
store_id - внешний ключ, ссылающийся на таблицу магазина.
active – указывает, активен ли сотрудник.
username - имя пользователя для входа в систему.
password - пароль для входа.
last_update - временная метка создания или последнего обновления строки.
staff_id
first_name
last_name
address_id
picture
email
store_id
active
username
password
last_update
1
John
Doe
1
[null]
john.doe@example.com
1
true
johndoe
********
2023-01-01 12:00:00
Индексы:
PRIMARY KEY, btree (staff_id)
Таблица store
Колонки:
store_id – уникальный идентификатор каждого магазина.
manager_staff_id - внешний ключ, ссылающийся на таблицу персонала менеджера магазина.
address_id - внешний ключ, ссылающийся на таблицу адресов.
last_update - временная метка создания или последнего обновления строки.