获取每个ID的最新记录

时间:2019-03-21 10:05:05

标签: sql google-bigquery

我正在尝试获取数据库中所有用户的列表。然后,我有另一个表,其中只有成员用户。

问题在于,今天成为会员的一些人可能早些时候是客户,会员或没有。这样我们就可以重复。

我要做的是仅根据数据库中存在的date列选择最新记录。

这是2个表的输出:

用户表:

mutate_if

成员表: Users table

要保留表的所有连接,并保留用户表中所有不同的记录,而成员表中最匹配的记录具有最新的cd.value。

    WITH users AS(

SELECT
fullVisitorId AS Clientid

FROM `records`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND
totals.visits = 1


), members As(

SELECT
MAX(date) AS date,
fullVisitorId AS Clientid,
cd.value AS CD_value,
cd.index AS CD_index

FROM `records`,
UNNEST(customDimensions) AS cd
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 10 DAY))
AND
FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND
totals.visits = 1
AND
cd.index = 6
group by
Clientid,
CD_value,
CD_index


)

SELECT
users.ClientId AS clientId,
members.CD_value

from users


LEFT JOIN members ON users.ClientId = members.Clientid


group by
members.CD_value,
clientId


order by
clientId ASC

1 个答案:

答案 0 :(得分:0)

尝试使用row_number()

SessionFactory