Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取字段的计数';s值,以及%总数的「;在一个查询中从该字段中的其余值中删除相同的值?_Sql_Aggregation - Fatal编程技术网

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。