如何用单条SQL语句同时获取分组计数与对应分组总计数?
解决方案
可以使用窗口函数实现需求,一次查询就能同时获取两种维度的计数,无需分开查询再合并。
具体SQL语句如下:
SELECT name, colour, COUNT(1) AS name_colour_count, -- 每个name+colour组合的个体计数 COUNT(1) OVER (PARTITION BY colour) AS colour_total_count -- 对应colour分组的总计数 FROM table GROUP BY name, colour;
语句说明
COUNT(1) AS name_colour_count:和你原第一个查询逻辑一致,统计每组name+colour的行数。COUNT(1) OVER (PARTITION BY colour):窗口函数,以colour为分区维度,计算每个colour分组的总行数(即你第二个查询的结果),并将该值填充到对应colour的每一行中。
内容的提问来源于stack exchange,提问作者Jim Macaulay
相关产品推荐
相关产品推荐

