9

有人可以帮我处理 SQL 命令吗?

我有一个包含以下数据的表(tbl_sActivity):

用户 ID | 客户 ID | 行为状态 |
1 | 7 | 冷 |
1 | 7 | 成交|
22 | 5 | 冷 |
1 | 6 | 冷 |
1 | 6 | 温暖 |
1 | 6 | 热 |
1 | 6 | 成交|
1 | 8 | 温暖 |
1 | 8 | 成交|
21 | 4 | 温暖 |
21 | 4 | 成交|

输出应该是

用户 ID | Count_C_id |
 1 | 3 |
 21 | 1 |
 22 | 1 |

我从网上搜索并了解到 MS ACCESS 不能使用 COUNT(DISTINCT) 函数。所以我被困在这个阶段好几天了。

4

2 回答 2

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 ;
于 2012-08-15T07:17:01.977 回答
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
于 2019-11-06T06:08:53.213 回答