求和后的非重复计数
Distinct Count after Sum
所以我想在聚合后进行计数。基本上,我希望能够将库存计数加总和,然后计算每个员工的库存计数非零的次数。
因此对于此数据,Jack/Jimmy 的计数为 1,Sam 的计数为 2,Steve 的计数为 0。我可以在 SQL后端,但我也希望他们能够使用日期参数。因此,如果他们将日期仅更改为 2017 年 1 月 1 日,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
这是在 Tableau 中创建集合的好案例。
Select 左侧数据窗格中的项目字段,然后右键单击以基于该字段创建一个集合。将其命名为 Bad Items,并在 Condition 选项卡上使用以下公式对其进行定义,假设您已经定义了一个名为 [DateParam] 且类型为 Date.
的参数
sum(if [Date] >= [DateParam] then [Inventory] end) <> 0
然后,您可以在计算中使用过滤器架、行架上的集合,或根据需要与其他集合组合。
P.S。我使用别名在 table 中显示文本 "Bad Items" 而不是 "In",为 Emp 字段设置手动默认排序顺序(以防您试图准确重现)
所以我想在聚合后进行计数。基本上,我希望能够将库存计数加总和,然后计算每个员工的库存计数非零的次数。
因此对于此数据,Jack/Jimmy 的计数为 1,Sam 的计数为 2,Steve 的计数为 0。我可以在 SQL后端,但我也希望他们能够使用日期参数。因此,如果他们将日期仅更改为 2017 年 1 月 1 日,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
这是在 Tableau 中创建集合的好案例。
Select 左侧数据窗格中的项目字段,然后右键单击以基于该字段创建一个集合。将其命名为 Bad Items,并在 Condition 选项卡上使用以下公式对其进行定义,假设您已经定义了一个名为 [DateParam] 且类型为 Date.
的参数sum(if [Date] >= [DateParam] then [Inventory] end) <> 0
然后,您可以在计算中使用过滤器架、行架上的集合,或根据需要与其他集合组合。
P.S。我使用别名在 table 中显示文本 "Bad Items" 而不是 "In",为 Emp 字段设置手动默认排序顺序(以防您试图准确重现)