从SQL中的表中获取相同字段的数量

时间:2014-08-28 14:43:13

标签: sql sql-server

我是下表:

UserId                                  Start                   Stop

1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:20:23.000 2014-04-15 18:21:38.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:20:23.000 2014-04-15 18:21:38.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:20:23.000 2014-04-15 18:21:38.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:20:23.000 2014-04-15 18:21:38.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:39:14.000 2014-04-15 18:40:02.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 18:41:17.000 2014-04-15 18:46:08.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-15 19:57:28.000 2014-04-15 19:59:53.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-16 08:19:48.000 2014-04-16 08:20:27.000
1550f503-914e-4f83-af2b-249d54cce369    2014-04-16 13:18:41.000 2014-04-16 14:24:23.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-16 16:10:11.000 2014-04-16 16:15:53.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-16 17:18:57.000 2014-04-16 17:20:09.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-16 20:21:27.000 2014-04-16 20:32:40.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-16 20:57:06.000 2014-04-16 20:57:41.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-16 20:57:56.000 2014-04-16 21:33:47.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 08:03:34.000 2014-04-17 08:19:42.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 08:23:04.000 2014-04-17 08:25:18.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 08:32:56.000 2014-04-17 08:36:13.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 08:40:17.000 2014-04-17 08:42:01.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 09:03:56.000 2014-04-17 09:04:07.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 09:38:37.000 2014-04-17 09:45:55.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 09:46:37.000 2014-04-17 09:48:35.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 09:48:58.000 2014-04-17 09:55:27.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 09:55:49.000 2014-04-17 09:57:11.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 10:00:32.000 2014-04-17 10:03:32.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 10:08:09.000 2014-04-17 10:14:04.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 10:16:49.000 2014-04-17 10:26:29.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 10:32:36.000 2014-04-17 10:37:42.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 10:42:01.000 2014-04-17 10:43:23.000
8e2555b7-7d7b-410b-818e-1c62f1d9268a    2014-04-17 10:58:34.000 2014-04-17 10:58:41.000
8e2555b7-7d7b-410b-818e-1c62f1d9268a    2014-04-17 10:58:53.000 2014-04-17 10:59:49.000
8e2555b7-7d7b-410b-818e-1c62f1d9268a    2014-04-17 11:02:25.000 2014-04-17 11:04:03.000
7a2e5b7c-9a3a-4ad1-ad79-946bcf2bf2f3    2014-04-17 12:43:04.000 2014-04-17 12:43:13.000

您可以在我的表格中看到一些UserId字段被重复,因此我使用以下查询来区分它们并获得UserId不是select DISTINCT UserId from UserSessions 的表格。重复:

select COUNT(UserId) from UserSessions
where UserId = (select DISTINCT UserId from UserSessions)

现在我需要获取表中第一个UserId重复的时间,以获得该用户访问应用程序的时间,所以我想做一个这样的查询:

{{1}}

但它不起作用,我怎么能解决我的问题?

3 个答案:

答案 0 :(得分:1)

我认为应该这样做:

SELECT UserId, COUNT(UserId) 
FROM UserSessions
GROUP BY UserId

您不必在WHERE子句中包含DISTINCT USERID部分,因为它将对ID进行分组。

答案 1 :(得分:1)

这是一个简单的group by count解决方案:

select UserId, count(*)
from UserSessions
group by UserId;

您还可以获取min(Start)max(Stop)来确定他们访问该应用程序的第一次和最后一次。

您可以在分组后添加having count(*) > 1子句,以查看谁多次访问过该应用程序(或任何其他号码)。

您可以使用SQL聚合做很多事情。你应该读一读。

Aggregate Functions (Transact-SQL)

答案 2 :(得分:1)

select UserId, COUNT(UserId) from UserSessions
GROUP BY UserId