DDL, DML, Basic, Filter

This commit is contained in:
Bonifatsiy
2026-05-11 06:50:16 +04:00
parent d280456d09
commit 0f63e21353
4 changed files with 306 additions and 0 deletions
@@ -0,0 +1,89 @@
/*
- Задание 1 — Спроектируй «карточку пользователя»
Ты делаешь экран “Пользователи” в админке и решаешь, какие поля там важны.
Работаем с таблицей **`users`**
**✅ Требования:**
1. Напиши запрос, который вернёт в результате только столбцы: **`id`**, **`name`**, **`country`**, **`created_at`**, **`email`**
2. Потом измени запрос так, чтобы:
- сначала отсортировать по **`created_at`** (новые сверху)
- потом по **`name`** по алфавиту внутри одной даты
- Задание 2 — Сегментация по странам (с выбором)
Маркетолог хочет понять, какая страна сейчас интереснее.
Работаем с таблицей **`users`**
**✅ Требования:**
1. Выбери страну **`US`**и напиши запрос, который:
- вернёт **`id`**, **`name`**, **`country`**;
- покажет только пользователей из выбранной страны;
- отсортирует их по имени.
2. Напиши второй запрос, который вернёт пользователей из страны **`UK`**.
- Задание 3 — Контакты для рассылки (думать про качество)
Нужно сделать список e‑mail для рассылки так, чтобы его не стыдно было отдавать маркетологу.
**✅ Требования:**
1. Напиши один запрос, который:
- вернёт только пользователей, у которых email **есть**;
- вернёт столбцы **`id`**, **`name`**, **`email`**;
- отсортирует их по имени.
2. Напиши второй запрос, который подготовит «чистый» вид email:
- вернёт только **`email`** в нижнем регистре (как **`email_lower`**);
- уберёт дубликаты email (нужно использовать **`DISTINCT`**).
- Задание 4 — Новички и активность
«Тебе нужно посмотреть, кто пришёл недавно и кого стоит “подогреть”.»
**✅ Требования:**
1. Напиши запрос, который:
- выберет пользователей, зарегистрированных **после** даты, которую ты сам выберешь (например, **`2024‑01‑11`**);
- вернёт **`id`**, **`name`**, **`created_at`**;
- отсортирует по **`created_at`** от новых к старым.
2. Ограничь результат так, чтобы увидеть только 3 самых новых пользователя.
3. Измени запрос так, чтобы пропустить самого нового и показать следующих двух (используй **`LIMIT`** и **`OFFSET`**).
*/
SELECT id,
name,
country,
created_at,
email
FROM dsolovianov.users
ORDER BY created_at DESC, name ASC;
SELECT id,
name,
country
FROM dsolovianov.users
WHERE country LIKE 'US';
SELECT id,
name,
country
FROM dsolovianov.users
WHERE country LIKE 'UK';
SELECT id,
name,
email,
LOWER(email) AS email_lower
FROM dsolovianov.users
WHERE email IS NOT NULL
ORDER BY name;
SELECT id,
name,
created_at
FROM dsolovianov.users
WHERE created_at > '2024-01-11'
ORDER BY created_at DESC
LIMIT 3 OFFSET 1;