add Base SQL task practise
This commit is contained in:
@@ -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 */
|
||||
Reference in New Issue
Block a user