Я выполняю запрос в формате ниже
SELECT b.date as Date,COUNT(DISTINCT user_id) AS NewUsers FROM (
SELECT user_id,MIN(date) as min_date
FROM tableA
WHERE date >= '2018-10-10'
AND filter1 = "XYZ"
GROUP BY ) a
CROSS JOIN (
SELECT date FROM tableB
WHERE date >= '2018-10-19' AND date <= CURRENT_DATE()
GROUP BY 1) b
WHERE a.date >= DATE_SUB(b.date, INTERVAL 6 DAY) AND a.date <= b.date
GROUP BY 1
Скажем так: result1
SELECT b.date as Date,COUNT(DISTINCT user_id) AS NewUsers FROM (
SELECT user_id,MIN(date) as min_date
FROM tableA
WHERE date >= '2018-07-10'
AND filter1 = "XYZ"
GROUP BY ) a
CROSS JOIN (
SELECT date FROM tableB
WHERE date >= '2018-07-19' AND date <= CURRENT_DATE()
GROUP BY 1) b
WHERE a.date >= DATE_SUB(b.date, INTERVAL 6 DAY) AND a.date <= b.date
GROUP BY 1
Выше результат2
Здесь 2018-07-19 - дата запуска.
Поскольку у меня есть данные до 2018-10-19 , я хочу выполнить запрос с более поздней даты, чтобы оптимизировать стоимость и потребление данных запросом ... но кое-как, Я получаю неверные данные.
Но, если я выполню тот же запрос с даты запуска, я получу правильные результаты.
Я имею в виду NewUsers from result1
для соответствующих дат (например, дата> = 2018-10-19) больше, чем NewUsers from result2
.
Не знаю, где я что-то упускаю.
Любая помощь будет принята с благодарностью.
Спасибо