SQL语句根据以前的条目返回数字并进行分组

时间:2019-06-12 01:44:48

标签: sql sql-server

对于具有userid1,userid2,clicktime的给定表

我想返回一个条目的数量,前一次我们有一个userid1 = userid2的条目,反之亦然。整个事情按月分组

应该计算是否

userid1      userid2       clicktime
34           67            january
67           34            december

结果应该是这样的: Day Number_of_Matches

12/22/2016 23 12/23/2016 3 12/24/2016 33

2 个答案:

答案 0 :(得分:0)

假设您希望对任何用户组合使用一行,并且每一行具有2个不同的用户ID:

select case 
when userid1>userid2 then userid1
when userid1<userid2 then userid2 end as userid1, 
case 
when userid1<userid2 then userid1
when userid1>userid2 then userid2 end as userid2, 
clicktime, count(*) from table
group by 1,2,3

如果您希望拥有2种组合,那就简单了:

select 
    userid1,userid2,clicktime, count(*)
    from table
    group by 1,2,3

我假设点击时间是唯一的月份

答案 1 :(得分:0)

让我尝试改写,

如果在以前的时间有userid1 = userid2和userid2 = userid1的行,我想计算给定时间的所有行。换句话说,如果用户2先前已单击用户1,则当用户1单击用户2时,将发生事件x。我想计算所有按时间分组的事件x。