根据其他过滤器的日期范围过滤结果

时间:2018-05-07 13:40:55

标签: sql tableau

背景

我有以下用户的注册渠道,用户创建帐户,然后通过提示进行注册:

id  date        create_account_date user_creates_account registration_date  user_registers 
1   12/30/2017  12/30/2017          1                    12/30/2017         1
2   12/30/2017  12/30/2017          1                    1/2/2018           0
2   1/2/2018    12/30/2017          0                    1/2/2018           1
3   12/31/2017  12/31/2017          1                    12/31/2017         1
4   1/1/2018    1/1/2018            1                    1/3/2018           0
4   1/3/2018    1/1/2018            0                    1/3/2018           1
5   1/1/2018    1/1/2018            1                    1/1/2018           1
6   1/2/2018    1/2/2018            1                    1/3/2018           0
6   1/3/2018    1/2/2018            0                    1/3/2018           1
7   1/3/2018    1/3/2018            1                    1/3/2018           1
8   1/4/2018    1/4/2018            1                    1/4/2018           1

总计:

                      12/30  12/31  1/1  1/2  1/3  1/4  Total  Total 1/2-1/4
User Creates Account  2      1      2    1    1    1    8      3
User Registers        1      1      1    1    3    1    8      5

问题:

我正在尝试添加日期过滤器,我可以在其中选择我想要查看的数据的日期范围。

  • 我添加了create_account_date作为过滤器,并选择了1月2日到1月4日。但是,这只会强制min(registration date)='1/2/18',而max(registration date)可能会在1月4日之后发生。

  • 我也尝试强制create_account_date = registration_date,但这低估了那些与create_account_date不同但仍在过滤日期范围内注册的人。

我希望能够按日期范围过滤器/参数过滤输出。 因此,每位用户的create_account_dateregistration date为> = min(date),每位用户create_account_dateregistration date为< = max(date)。这里create_account_date> = registration date

所以使用过滤器实现我会:

                      1/2/2018  1/3/2018    1/4/2018    Total
User Creates Account  1         1           1           3
User Registers        0         1           1           2

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您尝试以错误的方式尝试操作创建帐户和注册日期,而不是仅为普通日期字段添加过滤器,并将字段放在工作表中并查看结果。

如果你真的想要创建一个过滤器,那么你不能只使用普通过滤器来添加条件,而是需要创建两个参数。

开始日期的一个参数

结束日期的一个参数

对于这两个参数,使用日期字段显示数据列表

现在创建两个计算字段

If create account date >=[start date parameter] and create account date < [end date parameter]
then 
your field
end

类似地

If registration date >=[start date parameter] and registration date < [end date parameter]
then 
your field
end

使用行中的文件并将日期放在工作表的列

答案 1 :(得分:0)

我没有100%明确目标,但听起来您希望找到account_create_date介于开始日期和结束日期之间且registration_date介于开头之间的用户和结束日期。如果是这样,您可以使用WHERE (create_account_date BETWEEN @start_date AND @end_date) AND (registration_date BETWEEN @start_date AND @end_date)进行过滤。我的语法假设SQL Server,但您也可以使其适用于其他DBMS。