sql select coulmn是一个计数

时间:2015-05-25 18:01:24

标签: sql sql-server

我有一个用户表,我有另一个表有活动,有活动的用户登录一列。我怎样才能进行查询,以便我可以选择每个用户拥有的活动数量。

我真的无法想到如何做到这一点,也无法在网上搜索这样的内容。

所以例如

用户表

id | name
1  |  john 
2  |  karen

活动表

id | user_id
1  |  1
2  |  1
3  |  2

结果

name | Count
john | 2
karen| 1

4 个答案:

答案 0 :(得分:2)

利用LEFT JOINCOUNT汇总

SELECT name, COUNT(a.user_id) count
  FROM [User] u LEFT JOIN Activity a
    ON u.id = a.user_id
 GROUP BY u.id, u.name

输出:

|  name | count |
|-------|-------|
|  john |     2 |
| karen |     1 |

这是 SQLFiddle 演示

推荐阅读:

答案 1 :(得分:1)

select name, count(a.Id) as ActivityCount
  from [user] u
 inner join activity a on u.Us = a.UserId
 group by name

答案 2 :(得分:1)

select
  u.id as user_id, -- name is not necessary unique
  max(u.name) as name,
  count(a.Id) as [count]
from
[User] u
left join Activity a -- left join becuase some users can have no activities
on u.Id = a.user_id
group by u.id

答案 3 :(得分:1)

非常简单。您可以使用连接组合这两个表。为了增加计数(即总计数),可以使用一种方便的“计数”功能。总而言之,它看起来像这样 -

select u.id, u.name, count(*) as ct
from tblUser u
left join tblActivity a on u.id = a.id
group by u.id, u.name
order by ct desc