如何将同表中两条分组统计SELECT查询的结果合并为单条?
可以合并为单条查询
当然可以合并,你只需要用条件聚合在同一个GROUP BY查询里同时计算两个统计值,而且原第二条查询里的DISTINCT是多余的(GROUP BY product_category已经会为每个品类返回唯一一行结果,DISTINCT在这里起不到任何作用)。
合并后的完整查询语句如下:
SELECT product_category, COUNT(product_category) AS total_records, -- 各品类总记录数 COUNT(CASE WHEN is_click = true THEN 1 END) AS clicked_records -- 各品类is_click为true的记录数 FROM marketingimpression GROUP BY product_category
补充说明:
COUNT(product_category)等价于COUNT(*)(只要product_category不为NULL),用来统计每个品类的总记录数。COUNT(CASE WHEN is_click = true THEN 1 END)会只统计满足is_click = true的记录数,因为不满足条件时CASE语句返回NULL,而COUNT函数会忽略NULL值。你也可以用SUM(CASE WHEN is_click = true THEN 1 ELSE 0 END)实现同样的效果,两者在结果上没有区别,看个人习惯选择。
内容的提问来源于stack exchange,提问作者zelnite
相关产品推荐
相关产品推荐

