我正在尝试使用Tableau计算或sql返回每个客户在一个月内的帐户的最后一次销售的购买总和。
我有从8月到1月的数据,每个月有10万多个帐户,每个帐户中有多个用户。数据集如下所示
Account User Item Plan Status date Sale
1 a toy unlimited open 1/1/2019 10
1 a book unlimited closed 1/5/2019 10
1 a toy unlimited open 1/10/2019 10
1 b toy unlimited open 1/1/2019 10
1 c book unlimited open 1/1/2019 10
1 d toy unlimited open 1/1/2019 10
1 d toy unlimited open 1/2/2019 10
1 f toy unlimited open 1/1/2019 10
1 a toy unlimited open 2/1/2019 10
1 a book unlimited closed 2/5/2019 10
1 a toy unlimited open 2/10/2019 10
1 b toy unlimited open 2/1/2019 10
1 c book unlimited open 2/1/2019 10
1 d toy unlimited open 2/1/2019 10
1 d toy unlimited open 2/2/2019 10
1 f toy unlimited open 2/1/2019 10
每个帐户,客户,最后一次销售和当月总销售额的期望结果应如下所示:
1 a toy unlimited open 1/10/2019 30
1 b toy unlimited open 1/1/2019 10
1 c book unlimited open 1/1/2019 10
1 d toy unlimited open 1/2/2019 20
1 f toy unlimited open 1/1/2019 10
1 a toy unlimited open 2/10/2019 30
1 b toy unlimited open 2/1/2019 10
1 c book unlimited open 2/1/2019 10
1 d toy unlimited open 2/2/2019 20
1 f toy unlimited open 2/1/2019 10
我已经尝试过使用Tableau计算
IF [PlanCount] > 1 and [T|F MaxDate] = True then [Plan] else [Plan] END
要么
hive 中的Row_Number但任何列计数大于0时,其中都有一个Null值,这是因为计划设置为maxdate的最大日期,但当maxDate条件为false时也为null。在etl级别或tableau计算级别上应该在哪里进行?
最佳答案
在大多数数据库中,您可以使用如下窗口函数:
select t.*
from (select t.*,
sum(sale) over (partition by account, user, year(date), month(date)) as month_sales,
row_number() over (partition by account, user, year(date), month(date) order by date desc) as seqnum
from t
) t
where seqnum = 1;
从日期中提取年和月的功能可能取决于您实际使用的数据库。
关于sql - 带有Las帐户的Tableau月销售总额客户项目本月销售,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957364/