Sql 捕获发生率
我想捕获显示项目1是否离开设施的数据,那么项目2离开项目1的时间百分比是x%。我不确定Access SQL是否有能力捕获这个问题。我想知道这是否可以在SQL中实现,或者我是否已经从访问其他东西(可能是R和Python)毕业 到目前为止,我所拥有的: 多亏了昨天的一张海报,我能够根据物品在任何时候是否一起离开的情况将物品分组,代码如下:Sql 捕获发生率,sql,r,ms-access,Sql,R,Ms Access,我想捕获显示项目1是否离开设施的数据,那么项目2离开项目1的时间百分比是x%。我不确定Access SQL是否有能力捕获这个问题。我想知道这是否可以在SQL中实现,或者我是否已经从访问其他东西(可能是R和Python)毕业 到目前为止,我所拥有的: 多亏了昨天的一张海报,我能够根据物品在任何时候是否一起离开的情况将物品分组,代码如下: SELECT DISTINCT a.TK, b.TK FROM access3 a JOIN access3 b ON a.DocumentNo = b.Docu
SELECT DISTINCT a.TK, b.TK
FROM access3 a JOIN access3 b ON a.DocumentNo = b.DocumentNo
WHERE NOT a.TK=b.TK
ORDER BY a.TK,b.TK
这将提供以下输出示例:
TK15535 TK16644
TK15535 TK17566
TK15535 TK18306
TK15535 TK18747
TK15535 TK19183
TK15535 TK19505
TK15535 TK23247
TK15539 TK15535
TK15539 TK16644
TK16330 TK11297
TK16330 TK11300
TK16330 TK11301
TK16330 TK11309
TK16330 TK11320
TK16330 TK12081
TK16330 TK12233
TK16330 TK12395
TK16330 TK12405
同样,这表示如果一个TK曾经出现在一个文档编号中,并且有另一个TK,那么它就会出现在查询中
以下是一些示例数据,以了解我的工作内容:
Document No. TK# Posting Date Quantity Date
SSPT254937 TK24006 3/7/2019 1 19-03
SSPT254937 TK24006 3/7/2019 1 19-03
SSPT254937 TK27511 3/7/2019 4 19-03
SSPT254937 TK27508 3/7/2019 1 19-03
SSPT254955 TK19183 3/7/2019 1 19-03
SSPT254955 TK23247 3/7/2019 1 19-03
SSPT254956 21635 3/7/2019 150 19-03
SSPT254957 TK14813 3/7/2019 3 19-03
SSPT254962 TK16737 3/7/2019 4 19-03
SSPT254962 TK18008 3/7/2019 4 19-03
SSPT254977 TK26041 3/7/2019 1 19-03
SSPT254977 TK26042 3/7/2019 1 19-03
SSPT254977 TK22483 3/7/2019 1 19-03
SSPT254977 TK22481 3/7/2019 1 19-03
SSPT254979 TK20454 3/7/2019 2 19-03
SSPT254980 TK17715 3/7/2019 1 19-03
SSPT254982 TK29195 3/7/2019 1 19-03
SSPT254982 TK29078 3/7/2019 1 19-03
SSPT254982 TK29199 3/7/2019 1 19-03
SSPT254983 TK24784 3/7/2019 1 19-03
SSPT254983 TK25284 3/7/2019 1 19-03
SSPT254983 TK28267 3/7/2019 1 19-03
SSPT254983 TK28268 3/7/2019 1 19-03
SSPT254983 TK20098 3/7/2019 2 19-03
SSPT254983 TK21407 3/7/2019 1 19-03
SSPT254983 TK25632 3/7/2019 1 19-03
SSPT254984 TK15012 3/7/2019 1 19-03
SSPT254988 TK20003 3/7/2019 1 19-03
SSPT254988 TK18816 3/7/2019 1 19-03
SSPT254989 TK14094 3/7/2019 1 19-03
SSPT254989 TK21180 3/7/2019 1 19-03
SSPT254991 TK11309 3/7/2019 1 19-03
SSPT254991 TK20245 3/7/2019 1 19-03
SSPT254991 TK16918 3/7/2019 1 19-03
SSPT266212 29001 5/20/2019 1 19-05
SSPT266235 TK13958 5/20/2019 1 19-05
SSPT266236 TK16330 5/20/2019 1 19-05
SSPT266236 TK16332 5/20/2019 1 19-05
SSPT266236 TK16331 5/20/2019 1 19-05
SSPT266236 TK16737 5/20/2019 4 19-05
SSPT266236 TK18008 5/20/2019 4 19-05
SSPT266238 TK16343 5/20/2019 1 19-05
SSPT266238 TK16345 5/20/2019 1 19-05
SSPT266239 TK18815 5/20/2019 1 19-05
SSPT266239 TK15484 5/20/2019 2 19-05
SSPT266240 TK22951 5/20/2019 1 19-05
SSPT266240 TK22951 5/20/2019 1 19-05
SSPT266240 TK22951 5/20/2019 1 19-05
SSPT266240 TK22951 5/20/2019 1 19-05
SSPT266242 TK25676 5/20/2019 1 19-05
SSPT266242 TK25676 5/20/2019 1 19-05
SSPT266242 TK27435 5/20/2019 1 19-05
SSPT266242 TK27741 5/20/2019 1 19-05
SSPT266242 TK27914 5/20/2019 1 19-05
SSPT266242 TK25067 5/20/2019 1 19-05
到目前为止,我所尝试的:
我回到Excel,看看是否有什么聪明的方法可以通过查看透视表提取我正在寻找的百分比。它没有提供一种很好的方式来查看数据以推断发货百分比,如果我要使用透视表,就必须手动计算所有600多个项目
第二个想法是使用SQL查询来查看它是否会显示频率,但我没有看到任何类型的函数会给出频率。
作为参考,我在这里查看函数是否存在:
我想我想看到的是
TK16330 TK16331 .85
TK16330 TK16332 .53
TK16330 TK16343 .92
etc
对于SQL,这是可能的吗?或者我已经毕业了吗?您可以通过加入适当的行并聚合来获得所有对的并发性 以下工作假设表中没有重复项
select tk, tk2, count(*), count(a2.tk) / count(*) as ratio
from ((select distinct a.TK, a2.TK as tk2
from access3 as a inner join
access3 as a2
on a.DocumentNo = a2.DocumentNo
where a.TK <> a2.TK
) tt left join
access3 as a
on a.tk = tt.tk
) left join
access3 as a2
on a2.tk = tt.tk2 and a2.documentNo = a.documentNo
group by tk, tk2;
至于工具的选择,除了MS Access之外,几乎所有的数据库都会使这变得更容易。例如,MS Access不支持:
窗口功能
CTEs
清点
外连接条件中的不等式
这四件事可能对这个问题有用。还有很多其他的东西。是item1和item2变量吗?或者是一个包含所有项目X和项目Y的百分比?或者Item1是变量,ItemY是其余的项目?我想我不太确定你在问什么,我道歉。我想知道的是,如果项目1说TK16330离开了一个设施,它留下了什么项目,以及它离开TK16330的时间百分比是多少?现在我想起来了,第一项是自变量,其他的是变量。我的意思是,你有Item1=TK163301,还是全TK和全TKTK@bosois . . . 你提到时间和项目。您的代码提到了文档和TK。我很困惑。@GordonLinoff我想这些东西是TK。。。文件是有序的。有人回避了重复信息的问题吗?文档编号不会重复,但TKs肯定会重复。戈登,你能检查一下查询吗。我得到了错误的价值观。例如,18311只出现了两次,在查询中有一个是4,你没有提到数量是计算的一个因素,而问题并没有显示任何内容。@JuanCarlosOropeza我仍然理解错误。最后,他们是否有附加的数量并不重要。我只想知道他们一起发货的总次数百分比。这可能是TK1自己发货,也可能是它与TK2一起发货。想知道它随TK2一起发布的次数百分比。这个解决方案在我用一个不太糟糕的样本空间进行了测试后,看起来确实有效。我的样本空间有TK20006和TK18816。TK20006与18816一起发货两次,因此其比率为100%。然而,18816年只与它出去了两次,但与其他项目出去了两次以上。所以它正确地计算了50%。非常感谢戈登!!!!!