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