如何在SQL查询中同时统计活跃用户数与总用户数?
同一条SQL中同时统计活跃用户与总用户数
可以通过条件聚合函数实现单条SQL完成两个统计需求,无需拆分查询或使用子查询,主流关系型数据库(MySQL、PostgreSQL、SQL Server等)均支持该写法:
SELECT COUNT(DISTINCT CASE WHEN useractive = 1 THEN id END) AS activeusers, COUNT(DISTINCT id) AS totalusers FROM users;
逻辑说明
COUNT(DISTINCT CASE WHEN useractive = 1 THEN id END):仅对useractive=1的用户去重统计ID,不符合条件的记录会返回NULL,而COUNT函数会自动忽略NULL值,最终得到活跃用户数。COUNT(DISTINCT id):直接统计全表所有用户的去重ID数量,不受useractive状态限制。
内容的提问来源于stack exchange,提问作者swat
相关产品推荐
相关产品推荐

