我需要滚动 LTM 用户的唯一计数。 我查询生成开始和结束月份:
select
DATEADD('month', ROW_NUMBER() over() - 1, DATE('2019-06-01')) AS start_day,
DATEADD('month', ROW_NUMBER() over() - 13, DATE('2019-06-01')) AS end_day
from some_table
limit date_diff('month', '2019-05-01', getdate())
我试图做这样的事情但是它抛出了一个错误:
with dates as
(
select *
from
(
select
DATEADD('month', ROW_NUMBER() over() - 1, DATE('2019-06-01')) AS start_day,
DATEADD('month', ROW_NUMBER() over() - 13, DATE('2019-06-01')) AS end_day
from some_table
limit date_diff('month', '2019-05-01', getdate())
) a
order by 1 desc
)
SELECT
start_day,
(
SELECT
COUNT(DISTINCT id) AS user_count
FROM users
WHERE date BETWEEN end_day AND start_day
) a
FROM dates
GROUP BY 1
ORDER BY 1 desc;
我收到一个错误
ERROR: subquery uses ungrouped column "dates.end_day" from outer query