Sql 如何获取字段的计数';s值,以及%总数的「;在一个查询中从该字段中的其余值中删除相同的值?
解释标题中问题的示例: 表名称:水果Sql 如何获取字段的计数';s值,以及%总数的「;在一个查询中从该字段中的其余值中删除相同的值?,sql,aggregation,Sql,Aggregation,解释标题中问题的示例: 表名称:水果 |水果类型|您将使用窗口功能: 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;
|水果类型|您将使用窗口功能:
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;
谢谢你,你的第二个问题帮了我的忙!关于第一个问题,什么是“over()”部分?将计数(*)乘以1.0有什么意义呢?
over()
用于窗口/分析函数,这是SQL语言非常强大的一部分。之所以出现*1.0
,是因为您没有指定数据库,而有些数据库进行整数除法,因此1/2=0而不是0.5。