【问题标题】:How to count distinct records如何计算不同的记录
【发布时间】:2012-08-15 07:09:17
【问题描述】:

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

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

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

输出应该是

user_id | Count_C_id |
1          | 3             |
21        | 1             |
22        | 1             |

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

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    试试这个。 “诀窍”是首先有一个子查询来获取用户和客户端 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 ;
    

    【讨论】:

      【解决方案2】:

      建议不使用子查询进行查询。

      请找到下面的代码,它会比子查询更快更准确。

      // 临时表

      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
      

      【讨论】:

        猜你喜欢
        • 2012-11-08
        • 2020-10-25
        • 2019-03-14
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多