有人可以帮我解决SQL命令吗? 我有一个表(tbl_sActivity),其数据低于数据
user_id | client_id | act_status |
1 | 7 | 冷|
1 | 7 | dealed |
22 | 5 | 冷|
1 | 6 | 冷|
1 | 6 | 暖|
1 | 6 | 热点|
1 | 6 | dealed |
1 | 8 | 暖|
1 | 8 | dealed |
21 | 4 | 暖|
21 | 4 | dealed |
输出应该是
user_id | Count_C_id |
1 | 3 |
21 | 1 |
22 | 1 |
我从网上搜索并了解到MS ACCESS无法使用COUNT(DISTINCT)功能..所以我在这个阶段停留了好几天.. 非常感谢你。
答案 0 :(得分:15)
试试这个。 “技巧”是首先获得子查询以获取用户和客户端ID的所有不同组合,然后按用户进行分组:
SELECT
user_id
, COUNT(*) AS count_distinct_clients
FROM
( SELECT DISTINCT
user_id,
client_id
FROM tbl_sActivity
) AS tmp
GROUP BY
user_id ;
答案 1 :(得分:0)
建议不使用子查询而进行查询。
请找到以下代码,该代码将比子查询更快,更准确。
//临时表
CREATE TABLE #TempStudent(userId int, c_id int , Name varchar(MAX) )
SELECT max(userid) as UserId, count(c_id) as C_ID from #TempStudent
GROUP BY userId