总和后的不同计数

时间:2017-04-13 21:27:00

标签: tableau

所以我希望在聚合后进行计数。基本上我希望能够用一笔金额累计库存计数,然后计算每位员工有多少次非库存盘点。

因此,对于这个数据,杰克/吉米的计数为1,萨姆的计数为2,史蒂夫的计数为0.我可以在后端的SQL中轻松做到这一点,但我也希望他们能够使用日期参数。因此,如果他们将日期改为仅1/1/17,那么Sam的计数为1,其他人都会得到0.任何帮助都会非常感激!

数据

Emp          Item          Inventory     Date
Sam          Crackers       1          1/1/2017
Jack         Crackers       1          1/1/2017
Jack         Crackers      -1          2/1/2017
Jimmy        Crackers      -2          1/1/2017
Sam          Apples         1          1/1/2017
Steve        Apples        -1          1/1/2017
Sam          Cheese         1          1/1/2017

使用日期> =' 1/1/17':

Emp  NonZeroCount
Sam      2  
Jack     1
Jimmy    1
Steve    0

使用日期=' 1/1/17':

Emp  NonZeroCount
Sam      1  
Jack     0
Jimmy    0
Steve    0

SQL我设想它替换

Create Table #Test(
Empl varchar(50),
Item Varchar (50),
Inventory int,
Date Date
)

Declare @DateParam Date 
Set @DateParam = '1/1/17'

Insert into #Test (Empl,Item,Inventory,Date)
Values
('Sam','Crackers',1,'1/1/2017'),
('Jack','Crackers',1,'1/1/2017'),
('Jack','Crackers',-1,'2/1/2017'),
('Jimmy','Crackers',-2,'1/1/2017'),
('Sam','Apples',1,'1/1/2017'),
('Steve','Apples',-1,'1/1/2017'),
('Sam','Cheese',1,'1/1/2017');

Select
Item,Sum(Inventory) as Total
into #badItems
from #Test
Where Date >= @DateParam
group by Item
having Sum(Inventory) <> 0

Select
T.Empl,Count(Distinct BI.Item)
From #Test T
Inner Join #badItems BI on BI.Item = T.Item
group by T.Empl

1 个答案:

答案 0 :(得分:1)

这是在Tableau中创建集合的好例子。

在左侧的数据窗格中选择“项目”字段,然后右键单击以基于该字段创建集。将其命名为Bad Items,并在Condition选项卡上使用以下公式定义它,假设您已定义名为[DateParam]的Date类型的参数。

sum(if [Date] >= [DateParam] then [Inventory] end) <> 0

然后,您可以在过滤器架,行架,计算中使用该集,或根据需要与其他集合使用。

enter image description here

P.S。我使用别名在表格中显示文本“Bad Items”而不是“In”,为Emp字段设置一个手动默认排序顺序(如果你试图准确再现它)