需要从用户有多个条目的数据库中提取记录

时间:2016-04-15 18:56:17

标签: sql sql-server count

我正在处理一个非常简单的查询,该查询会提取数据以显示给定时间范围内某个位置的所有访问者。

SELECT VisitID, UserID, UserName, VisitDate
From Visit
WHERE VisitDate BETWEEN '04/01/2016' AND '04/03/2016'

当然,我得到的结果如下:

VisitID     UserID     UserName         VisitDate
----------------------------------------------------
0001        1234       John Smith       04/01/2016
0002        3456       Jane Doe         04/01/2016
0003        6789       Mike Jones       04/02/2016
0004        1234       John Smith       04/02/2016
0005        4567       Bob Brown        04/02/2016
0006        3456       Jane Doe         04/03/2016
0007        1234       John Smith       04/03/2016

现在我需要做的只是选择在给定时间段内有2次或更多次访问的用户,所以在这个特定的例子中,我不会想要Mike Jones和Bob Brown,因为他们只有1次访问。我不完全确定如何解决这个问题。我认为这将是一个声明变量,将该变量设置为COUNT VisitID,然后在WHERE添加COUNT(VisitID) >= 2子句的行。但我不确定语法。我是在正确的轨道上吗?如何仅针对多次访问的访问者过滤这些结果?

2 个答案:

答案 0 :(得分:4)

如果我理解你,你需要这个:

SELECT UserID, UserName
FROM Visit
WHERE VisitDate BETWEEN '04/01/2016' AND '04/03/2016'
GROUP BY UserID, UserName
HAVING COUNT(*) >= 2

答案 1 :(得分:0)

我更喜欢在CTE中使用窗口函数来处理这类事情:

SELECT DISTINCT UserID, UserName
FROM CTE
WHERE countVal>=2

Per Stan的评论 - 如果您只想要不同的UserName / UserID值,请将最终的SELECT更改为:

oauth2client.client.SignedJwtAssertionCredentials