DML: INSERT, UPDATE, DELETE

Скрыть список уроков

Отработка управления данными: вставка, обновление, удаление - типовые кейсы изменения данных в таблицах

SQL

1. CRM

Вставить одной командой трёх клиентов из таблицы ниже, с явным перечислением колонок; дату регистрации проставить текущей.
Поля результата
client_id, name, email, city, created_at
Список таблиц
Ваш запрос
Исходные таблицы

clients

ПолеКомментарий
client_idидентификатор
nameФИО
emailпочта
cityгород
created_atдата создания

Вставить эти 3 строки (created_at - текущей датой):

client_idnameemailcity
1Иванов И.ivanov@mail.ruМосква
2Петров П.petrov@mail.ruКазань
3Сидорова А.sidorova@mail.ruНовосибирск

SQL

2. DWH - витрина

Наполнить пустую витрину client_summary из orders: сгруппировать по client_id, записать количество заказов, их сумму и дату последнего. Одной командой, без временных таблиц.
Поля результата
client_id, orders_cnt, total_amount, last_order_date
Список таблиц
Ваш запрос
Исходные таблицы

orders

ПолеКомментарий
order_idзаказ
client_idклиент
order_dateдата
amountсумма

client_summary (приёмник, пустая)

ПолеКомментарий
client_idклиент
orders_cntкол-во заказов
total_amountсумма
last_order_dateдата последнего

SQL

3. Интернет-магазин - чистка заказов

Перевести все заказы старше 90 дней со статусом new в статус cancelled.
Поля результата
order_id, status, order_date
Список таблиц
Ваш запрос
Исходные таблицы

orders

ПолеКомментарий
order_idзаказ
statusстатус
order_dateдата заказа

SQL

4. Программа лояльности

В таблице clients поле total_spent заполнено неверно: где-то нули, где-то устаревшие значения. Пересчитать его одной командой UPDATE: каждому клиенту записать в total_spent сумму amount всех его заказов из таблицы orders. Текущее значение не учитывать - его нужно заменить, а не прибавить к нему. Клиентам без заказов проставить 0.
Поля результата
client_id, name, total_spent
Список таблиц
Ваш запрос
Исходные таблицы

clients

ПолеКомментарий
client_idклиент
nameимя
total_spentсумма покупок

orders

ПолеКомментарий
order_idзаказ
client_idклиент
amountсумма

SQL

5. Медстрахование - дубли пациентов

Удалить дубликаты, оставив по каждому policy_no одну запись - с максимальным updated_at. Даты updated_at в рамках одного пациента (policy_no) не повторяются.
Поля результата
patient_id, policy_no, full_name, updated_at
Список таблиц
Ваш запрос
Исходные таблицы

patients

ПолеКомментарий
patient_idидентификатор
policy_noномер полиса
full_nameФИО
updated_atдата обновления

SQL

6. ETL - загрузка курсов валют

Загрузить пачку курсов из таблицы ниже идемпотентно - при конфликте по ключу перезаписать курс новым значением.
Поля результата
currency, rate_date, rate
Список таблиц
Ваш запрос
Исходные таблицы

rates

ПолеКомментарий
currencyвалюта, часть PK
rate_dateдата, часть PK
rateкурс

Загрузить эту пачку:

currencyrate_daterate
USD2024-05-0191.20
EUR2024-05-0198.50