Я хочу рассчитать DAU и исключить пользователя, которого мы не считаем «реальным» (сотрудники, бета-тестеры и т. Д.).
Раньше все работало нормально, когда я писал фильтрацию в запросе:
SELECT
count(distinct user_id) AS daily,
e.event_timestamp::DATE AS date
FROM
"public"."events" AS e
WHERE
user_id IN (SELECT
distinct id
from
"user"."user"
WHERE
username IS NOT NULL AND position IS NOT NULL )
GROUP BY date
Когда я пытаюсь изменить его на значение ниже, которое должно давать более или менее такое же количество (в основном вместо определения4000 «реальных пользователей» я определяю 1000 «не пользователей», которые я хочу исключить).Тем не менее, это дает мне более высокие показатели.Это похоже на то, что отдельное утверждение не работает.
Я добавил NOT NULL в подзапрос, но не изменил результат.Есть ли что-то с подзапросом NOT IN +, которое работает не так, как предложение IN?
SELECT
count(distinct e.user_id) AS daily,
e.event_timestamp::DATE AS date
FROM
"public"."events" AS e
WHERE
e.user_id NOT IN (SELECT distinct id FROM "public"."non_users" WHERE id IS NOT NULL)
GROUP BY
date
ORDER BY
date