Sobes.tech
Junior
37

Жарнамалық кампаниялар бойынша қолданушы әрекетін талдау Компания жарнамалық кампанияларға байланысты оқиғаларды қадағалайды. Екі кесте беріледі: • campaigns — кампаниялардың идентификаторлары мен атаулары бар тізімі; • events — кампаниялар бойынша қолданушы оқиғалары, оқиға түрі (мысалы, 'click') және уақыты туралы ақпаратпен. Есепте әр кампания үшін: • Барлық оқиғалар саны. • Оқиғаларды жасаған бірегей қолданушылар саны. • Кампания бойынша алғашқы және соңғы оқиғаның уақыты. • Жалпы оқиғалар саны бойынша кампанияның рейтингі. Рейтинг — деректер тәртібі негізінде әр жолға берілетін сан. Егер екі немесе одан көп жолда бірдей мән болса, олар бірдей рейтинг алады, бірақ келесі рейтинг өткізіледі. Тек оқиғалары бар кампаниялар есепке алынады; оқиғалары жоқ кампаниялар ескерілмейді. Жалпы есепті рейтинг бойынша өсу тәртібімен, содан кейін атауы бойынша сұрыптау керек.

Сұралған компаниялар
01.tech

AI-дан жауап

sobes.tech AI

sql WITH event_stats AS ( SELECT c.campaign_name, e.campaign_id, COUNT(*) AS total_events, COUNT(DISTINCT e.user_id) AS unique_users, MIN(e.event_time) AS first_event_time, MAX(e.event_time) AS last_event_time FROM campaigns c JOIN events e ON c.campaign_id = e.campaign_id GROUP BY c.campaign_name, e.campaign_id ), ranked AS ( SELECT campaign_name, total_events, unique_users, first_event_time, last_event_time, RANK() OVER (ORDER BY total_events DESC) AS campaign_rank FROM event_stats ) SELECT campaign_name, total_events, unique_users, first_event_time, last_event_time, campaign_rank FROM ranked ORDER BY campaign_rank ASC, campaign_name ASC;


Объяснение:
- Сначала объединяем таблицы campaigns и events по campaign_id, чтобы получить события с названиями кампаний.
- Группируем по кампании, считаем общее количество событий, уникальных пользователей, минимальное и максимальное время события.
- Используем оконную функцию RANK() для присвоения ранга по убыванию total_events.
- В итоговом запросе сортируем по возрастанию ранга и по алфавиту названия кампании.
- Кампании без событий не попадут в результат, так как мы делаем внутреннее соединение с events.

Таким образом, получаем отчет с нужными метриками и ранжированием.