SQLHUB Telegram 1952
🧠 Хитрая SQL-задача с подвохом: «Найди самого преданного клиента»

У тебя есть таблица purchases со следующей структурой:


purchases (
id SERIAL PRIMARY KEY,
user_id INT,
item_id INT,
amount DECIMAL,
purchase_date DATE
)


Задача: Найти user_id пользователя, который совершал покупки в каждый календарный месяц хотя бы один раз за последние 2 года.

Но есть подвох:

пользователь должен был купить в каждый месяц (например, март 2024, апрель 2024, ..., июль 2025 — всего 24 месяца)

пропуски даже в одном месяце — дисквалификация

использовать GROUP BY, FILTER, GENERATE_SERIES, LEFT JOIN и другие техники разрешено

📌 Подумай:

- как сгенерировать список всех нужных месяцев?

- как сопоставить их с месяцами, в которых были покупки у каждого пользователя?

- как убедиться, что пользователь не пропустил ни одного?

🧩 Подсказка: решение можно построить с generate_series() по месяцам и LEFT JOIN к сгруппированным user_id + month.

@sqlhub
🔥10👍76



tgoop.com/sqlhub/1952
Create:
Last Update:

🧠 Хитрая SQL-задача с подвохом: «Найди самого преданного клиента»

У тебя есть таблица purchases со следующей структурой:


purchases (
id SERIAL PRIMARY KEY,
user_id INT,
item_id INT,
amount DECIMAL,
purchase_date DATE
)


Задача: Найти user_id пользователя, который совершал покупки в каждый календарный месяц хотя бы один раз за последние 2 года.

Но есть подвох:

пользователь должен был купить в каждый месяц (например, март 2024, апрель 2024, ..., июль 2025 — всего 24 месяца)

пропуски даже в одном месяце — дисквалификация

использовать GROUP BY, FILTER, GENERATE_SERIES, LEFT JOIN и другие техники разрешено

📌 Подумай:

- как сгенерировать список всех нужных месяцев?

- как сопоставить их с месяцами, в которых были покупки у каждого пользователя?

- как убедиться, что пользователь не пропустил ни одного?

🧩 Подсказка: решение можно построить с generate_series() по месяцам и LEFT JOIN к сгруппированным user_id + month.

@sqlhub

BY Data Science. SQL hub


Share with your friend now:
tgoop.com/sqlhub/1952

View MORE
Open in Telegram


Telegram News

Date: |

Select “New Channel” Content is editable within two days of publishing 2How to set up a Telegram channel? (A step-by-step tutorial) Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data.
from us


Telegram Data Science. SQL hub
FROM American