Files
homework/dsolovianov/postgresql/Базовый SQL.sql
T
2026-05-11 07:02:07 +04:00

92 lines
3.9 KiB
SQL
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
- Задание 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'
ORDER BY name;
SELECT id,
name,
country
FROM dsolovianov.users
WHERE country LIKE 'UK'
ORDER BY name;
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;