我使用红移的Postgres从单一插入多行选择
我想要的输出为每天
输出表monthly_user_activity
id maudate date userid
1 2016-10-10 2016-10-10 MjA1MDATG2TDUwOTE2MD
2 2016-10-11 2016-10-10 MjA1MDATG2TDUwOTE2MD
3 2016-10-12 2016-10-10 MjA1MDATG2TDUwOTE2MD
4 2016-10-13 2016-10-10 MjA1MDATG2TDUwOTE2MD
5 2016-10-14 2016-10-10 MjA1MDATG2TDUwOTE2MD
6 2016-10-15 2016-10-10 MjA1MDATG2TDUwOTE2MD
7 2016-10-16 2016-10-10 MjA1MDATG2TDUwOTE2MD
...
30 2016-11-09 2016-10-10 MjA1MDATG2TDUwOTE2MD
输入表user_activity:
id date userid
1 2016-10-10 MjA1MDATG2TDUwOTE2MD
我的输入只是一行代表一天中的用户活动,对于e在此表下面我想在未来创造天30个副本ACH行,我这是怎么会计算每日MAU
我想这样的事情,下面我愿意来运行此查询30次,它似乎不是很干。
INSERT INTO monthly_user_activity
(maudate, date, userid)
SELECT
original_date::date + interval '0 day',
original_date,
userid
FROM (
SELECT
date as original_date,
userid
FROM
user_activity
)
INSERT INTO monthly_user_activity
(maudate, date, userid)
SELECT
original_date::date + interval '1 day',
original_date,
userid
FROM (
SELECT
date as original_date,
userid
FROM
user_activity
)
INSERT INTO monthly_user_activity
(maudate, date, userid)
SELECT
original_date::date + interval '2 day',
original_date,
userid
FROM (
SELECT
date as original_date,
userid
FROM
user_activity
)
---...
INSERT INTO monthly_user_activity
(maudate, date, userid)
SELECT
original_date::date + interval '30 day',
original_date,
userid
FROM (
SELECT
date as original_date,
userid
FROM
user_activity
)
从评论 更新这是使用你发给我的链接的正确方法。
SELECT
id
d::date,
date as original_date,
userid
FROM user_activity,
(
select (dateadd(day, +row_number() over (order by true), date)) as d
from user_activity limit 30
)
Redshift不以有用的方式支持generate_series。有解决方法:http://stackoverflow.com/a/34167753/3019685。 – systemjack