Sql 捕获发生率

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

我想捕获显示项目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.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%。非常感谢戈登!!!!!