【发布时间】:2018-05-01 18:29:12
【问题描述】:
我想计算在当前团队成立之前每个成员与其他团队成员的先前联系数。
我有下表
TeamId UserId Date
1 100 2/1/2017
1 101 2/1/2017
1 102 2/1/2017
2 100 2//1/2016
2 105 2//1/2016
3 100 2//1/2015
3 101 2//1/2015
3 102 2//1/2015
3 105 2//1/2015
3 106 2//1/2015
4 101 1/3/2015
4 102 1/3/2015
4 105 1/3/2015
4 106 1/3/2015
我想得到下表
TeamId number of previous collaborations
1 4
2 1
3 6
4 0
以团队 1 为例: 用户 100 在团队 3 中与用户 101 合作过一次,在团队 3 中与用户 102 合作过一次,因此 = 1+1=2 用户 101 与用户 102 合作了两次(一次在团队 3 中,一次在团队 4 中)= 1+1=2
所以这个团队之前的合作次数是 4。
我不知道如何编写代码。任何帮助表示赞赏
SELECT [TeamId],
COUNT( SELECT [Date] FROM [submissions] s1
WHERE s.[UserId] = [submissions].[UserId]
AND [Date]< [submissions].[Date]
ORDER BY [DateSubmitted] DESC) as Num_Collaborations
)
FROM [submissions]
【问题讨论】:
-
具有挑战性的问题。这个链接应该让你开始......我只是没有更多的时间来处理它。关注结果,而不是代码。一旦你理解了这些,你就可以从 cte 过滤器中计算出你的下一段代码。 rextester.com/OSS61370
-
谢谢@scsimon。我用你的代码来生成我的答案。
-
非常感谢@scsimon
标签: sql sql-server-2008 select count