Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите найти ошибку

Анна Знаток (251), на голосовании 5 месяцев назад
Задача: Сгруппируйте данные по месяцу события (в виде '2020-01-01 00:00:00') и количеству зарегистрированных пользователей. Посчитайте число уникальных пользователей в таблице tools_ shop.events . Отсортируйте таблицу по тем же полям — по месяцу события и количеству зарегистрированных пользователей.
таблицы:
Мое решение:
SELECT *
FROM tools_ shop.events t1
INNER join (select user_id,
count (*) over () as total
from tools_shop.users
where date_trunc ('month', created_at) = '2020-01-01') t2 on t1.user_id = t2.user_id
AND platform = 'android'
AND DATE_TRUNC('month',event_time::timestamp) BETWEEN '2020-01-01' AND '2020-03-01'
ORDER BY DATE_TRUNC('month',event_time::timestamp), total
Голосование за лучший ответ
Катерина Сергеева Ученик (109) 5 месяцев назад
подскажите, решили ли вы задачу? столкнулась с той же проблемой
Катерина СергееваУченик (109) 5 месяцев назад
Решила! Если кому то актуально

WITH profiles as (
SELECT user_id,
COUNT(user_id) OVER () AS user_cnt
FROM tools_shop.users
WHERE (created_at::date) BETWEEN '2020-01-01' AND '2020-01-31'
),
events as (
SELECT *
FROM tools_ shop.events
WHERE ((event_time::date) BETWEEN '2020-01-01' AND '2020-03-31')
AND platform = 'android')
SELECT CAST(DATE_TRUNC('month', event_time)as TIMESTAMP) as month,
user_cnt,
COUNT(DISTINCT events.user_id) AS cnt_user
FROM events JOIN profiles ON events.user_id = profiles.user_id
GROUP BY month, user_cnt
ORDER BY month, user_cnt
Иван КурковЗнаток (350) 3 недели назад
спасибо. решение что надо.
Doge Meme Знаток (326) 2 месяца назад
Так же столкнулся с проблемой, вы смогли решить?
pvc_moscow Ученик (110) 1 месяц назад
Ну что там? Та же проблема
Владислава Соболева Ученик (131) 20 часов назад
WITH profile AS (SELECT user_id,
COUNT (user_id) OVER (PARTITION BY DATE_TRUNC ('month' , created_at)='2020-01-01') AS total_users
FROM tools_shop.users
WHERE DATE_TRUNC ('month' , created_at)='2020-01-01'),
cohorts AS (SELECT *
FROM tools_ shop.events
WHERE platform = 'android' AND (event_time BETWEEN '2020-01-01' AND '2020-04-01'))

SELECT DATE_TRUNC('month',c.event_time::timestamp) AS month_of_event,
p.total _users,
COUNT (DISTINCT c.user_id)
FROM cohorts AS c INNER JOIN profile AS p ON c.user_id=p.user_id
GROUP BY DATE_TRUNC('month',c.event_time::timestamp), p.total _users
Похожие вопросы