homework, pet project DE Dmitry_Medvedev #1

Open
dmitry_medvedev wants to merge 264 commits from md_branch into main
Showing only changes of commit 536a5c41c7 - Show all commits
@@ -13,7 +13,7 @@ ORDER BY days_since_registration DESC;
-- 2 Задача
SELECT name,
LOWER(email) AS email_clean,
SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
SUBSTRING(LOWER(email) FROM POSITION('@' IN LOWER(email)) + 1) AS domain
FROM users
WHERE email IS NOT NULL
ORDER BY domain, name;
@@ -30,6 +30,7 @@ SELECT name,
WHEN age < 25 THEN 'young'
WHEN age BETWEEN 25 AND 35 THEN 'adult'
WHEN age > 35 THEN 'senior'
ELSE 'unknown'
END AS age_group
FROM users
ORDER BY age;
@@ -70,17 +71,17 @@ FROM users;
SELECT name,
CURRENT_DATE - created_at::date AS days_since_registration,
CASE
WHEN created_at >= CURRENT_DATE - INTERVAL '30 days' THEN 'new'
WHEN created_at < CURRENT_DATE - INTERVAL '30 days'
AND created_at > CURRENT_DATE - INTERVAL '180 days' THEN 'middle'
WHEN created_at < CURRENT_DATE - INTERVAL '180 days' THEN 'old'
WHEN created_at::date >= CURRENT_DATE - INTERVAL '30 days' THEN 'new'
WHEN created_at::date < CURRENT_DATE - INTERVAL '30 days'
AND created_at::date > CURRENT_DATE - INTERVAL '180 days' THEN 'middle'
ELSE 'old'
END AS tenure_group,
is_active
FROM users
ORDER BY created_at >= CURRENT_DATE - INTERVAL '30 days',
created_at < CURRENT_DATE - INTERVAL '30 days'
AND created_at > CURRENT_DATE - INTERVAL '180 days',
created_at < CURRENT_DATE - INTERVAL '180 days',
ORDER BY created_at::date >= CURRENT_DATE - INTERVAL '30 days',
created_at::date < CURRENT_DATE - INTERVAL '30 days'
AND created_at::date > CURRENT_DATE - INTERVAL '180 days',
created_at::date < CURRENT_DATE - INTERVAL '180 days',
days_since_registration;
-- Ответ на вопросы
-- 1. В сегментации по возрасту показывает возраст пользователя,