如何将三条会员数据统计SQL查询语句合并为一条?
合并会员数据统计SQL语句的方案
你可以通过条件聚合的方式,把三条查询合并成一条,只需要一次扫描数据表就能得到所有统计结果,效率更高。
方案一(使用COUNT结合CASE WHEN)
SELECT COUNT(MemberID) AS cnt, COUNT(CASE WHEN Deleted = 1 THEN 1 END) AS UnUsable, COUNT(CASE WHEN Deleted = 0 THEN 1 END) AS Usable FROM memberdata WHERE MemberID IS NOT NULL;
方案二(使用SUM结合CASE WHEN)
SELECT COUNT(MemberID) AS cnt, SUM(CASE WHEN Deleted = 1 THEN 1 ELSE 0 END) AS UnUsable, SUM(CASE WHEN Deleted = 0 THEN 1 ELSE 0 END) AS Usable FROM memberdata WHERE MemberID IS NOT NULL;
说明
- 原第一条查询的
WHERE MemberID应该是要过滤MemberID不为空的记录,补充IS NOT NULL让逻辑更严谨; - 条件聚合通过
CASE WHEN判断每条记录是否符合统计条件,再用聚合函数计算总数,避免多次查询表的额外开销。
内容的提问来源于stack exchange,提问作者정민영
相关产品推荐
相关产品推荐

