首页 > 解决方案 > 如何在一个查询中从该字段的其余值中获取字段值的 COUNT 以及该相同值的“总数百分比”?

问题描述

解释标题中问题的示例:

表名:水果

| 水果类型 | <-- 列标题

|苹果|

|苹果|

|橙色|

|橙色|

所以基本上,我想要最简单的查询来返回此列中橙子的 COUNT(即 2),以及将橙子的百分比与水果的总体类型(即 50%)分开的列。

具体来说,我不仅坚持将两个必要的要求组合到一个查询中,而且还坚持如何获得第二部分 (%)。

标签: sqlaggregation

解决方案


您将使用窗口函数:

select fruit_type, count(*), count(*) * 1.0 / sum(count(*)) over ()
from fruit
group by fruit_type;

这将返回所有水果的值,而不仅仅是橙子。

如果您只想要橘子,请使用条件聚合:

select avg(case when fruit_type = 'orange' then 1.0 else 0 end)
from fruit;

推荐阅读