我有两个表,表 a 和表 b。
表a的设置如下......
用户
Id ... InspectStat PurchaseStat SoldStat POSStat
------------------------------------------------------------
1
2
3
特性
UserId ... Stage
---------------------------------------------------
1 Inspect
3 Purchase
1 Sold
2 POS
我正在尝试编写一个作业,它将每小时计算每个用户在每个阶段的总属性的百分比。所以例如,最终结果应该是这样的(假设只有这 4 个属性)
Id ... InspectStat PurchaseStat SoldStat POSStat
------------------------------------------------------------
1 .5 0 .5 0
2 0 0 0 1.0
3 0 1.0 0 0
我努力了
ALTER PROCEDURE [dbo].[StatCounter]
AS
DECLARE @PropertyCount as float
BEGIN
set @PropertyCount = (select count(AcquisitionAssociateId) from [dbo].[Properties], [dbo].[Users]
WHERE
[dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId)
update [dbo].[Users]
set [dbo].[Users].PurchaseStat = ((select count (AcquisitionAssociateId) from [dbo].[Properties]
WHERE
[dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId
and
[dbo].[Properties].Stage = 'Purchase') / @PropertyCount)
...Repeat for 3 other stages
这个方法正确地计算了每个阶段的属性数量,但是在执行它之后,我意识到它实际上在做的是计算用户分配给它们的属性的数量,而不是得到多少属性的不同计数个人用户实际上有。我正在学习 SQL,因此非常感谢您的帮助。