add Base SQL task practise

This commit is contained in:
Dmitry Medvedev
2026-05-20 23:32:08 +05:00
parent 5e62bf4aad
commit 0335c6eca4
+66
View File
@@ -0,0 +1,66 @@
--TASK 1
SELECT id, name, country, created_at, email
FROM users;
SELECT id, name, country, created_at, email
FROM users
ORDER BY created_at DESC, name ASC;
/* Почему выбрал именно эти столбцы и зачем такая сортировка?
эти столбцы содержать основную информацию о пользователях,
а сортировка поможет выявить сначала новых пользователей,
а потом сортировку по алфавиту внутри одной даты */
--TASK 2
--пользователи из страны US (id,name,country) с сортировкой по имени
SELECT id, name, country
FROM users
WHERE country = 'US'
ORDER BY name ASC;
--пользователи из страны UK
SELECT *
FROM users
WHERE country = 'UK';
/* Какой из двух запросов маркетологу полезнее и почему?
второй запрос будет более информативным ввиду наличия информации
по дате регистрации и активности, даже возможно перегруженным */
--TASK 3
SELECT id, name, email
FROM users
WHERE email IS NOT NULL
ORDER BY name ASC;
SELECT DISTINCT LOWER(email) AS email_lower
FROM users;
/* Зачем вообще приводить email к одному регистру и убирать дубликаты на стороне базы?
Это необходимо ввиду того, что многие пользователи при регистрации могут использовать
верхний регистр, который в свою очередь никак не влияет на самом деле на сам адрес,
но может влиять при обработке данных.
А дубликаты убираются ввиду возможной повторной регистрации пользователей,
что в свою очередь тоже может повлиять на анализ информации по пользователям. */
-- TASK 4
SELECT id, name, created_at
FROM users
WHERE created_at > '2024-01-18'
ORDER BY created_at DESC
LIMIT 3;
SELECT id, name, created_at
FROM users
WHERE created_at > '2024-01-18'
ORDER BY created_at DESC
LIMIT 2 OFFSET 1;
/* В каком реальном сценарии тебе пригодится OFFSET?
OFFSET может пригодиться когда например нужно убрать пользователей,
которые зарегистрировались сегодня, а сама подписка, например, с завтрашнего дня считается.
Или когда данные нужно смотреть партиями или же когда необходимо подгрузить данные по-странично,
то есть на первой странице может быть 10 человек, на второй еще 10 */