From 0335c6eca4b993904a344f9366c2258ee5e3a722 Mon Sep 17 00:00:00 2001 From: Dmitry Medvedev Date: Wed, 20 May 2026 23:32:08 +0500 Subject: [PATCH] add Base SQL task practise --- dmedvedev/base_sql.sql | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 dmedvedev/base_sql.sql diff --git a/dmedvedev/base_sql.sql b/dmedvedev/base_sql.sql new file mode 100644 index 0000000..b6e8eea --- /dev/null +++ b/dmedvedev/base_sql.sql @@ -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 */ \ No newline at end of file