У меня есть левая таблица:
CREATE TABLE tab (
code int
, max date
, min date
);
И правая таблица с пользовательской активностью (одна строка на пользователя в день):
CREATE TABLE activity (
date date
, "user" text
);
Пример данных:
Таблица tab
(с добавленным столбцом, который я пытаюсь вычислить):
Code Min Max (Expected output)
201 2019-1-8 2019-1-10 3
202 2019-1-8 2019-1-11 3
203 2019-1-11 2019-1-12 2
Таблица activity
:
Date User
2019-1-8 ABCD001
2019-1-8 ABCD002
2019-1-9 ABCD001
2019-1-9 ABCD003
2019-1-10 ABCD001
2019-1-11 ABCD002
2019-1-12 ABCD003
Я хочу выводить столбцы tab
, расширенный числом отдельных пользователей activity
в пределах этого диапазона дат
Так что мне нужно как-то присоединиться к диапазону дат от min
до max
.
Пробная версия 1:
select code, min, max, count(b.distinct user)
from tab a
left join activity b on b.date between a.min and a.max
group by 1,2,3
Пробная версия 2:
select code, min, max, count(b.distinct user)
from tab a
left join activity b on b.date <= a.min and b.date >=a.max and b.date = a.min
group by 1,2,3
Я запустил разные версии вышеприведенного кода, но для его запуска требуются годы или он не работает.