目标统计值:均值、方差、标准差、众数、中位数。
- 均值
AVG
eg: select avg(item_a) from table_a; - 中位数
percentile或者percentile_approx,此函数本是求分位数,但是0.5的分位数不就是中位数嘛!
若是int型(bigint等)用percentile 例:select percentitle(item_a,0.5) from table_a;
若是float(或者double等)用percentile_approx,例:select percentitle_approx(item_a,0.5) from table_a。
approx是approximate的简写。 - 众数
众数没有函数。从帖子中可以看到有此种写法:SELECt salary,COUNT(*) AS cnt FROM salaries GROUP BY salary HAVINg count(*) >= ALL(SELECt COUNT(*) FROM salaries GROUP BY salary)
但此种写法不适合多字段同时获得。至于用不用,看你需求了。 - 标准差
你可以看到一些帖子写了三个:stddev,stddev_samp,stddev_pop。他们的关系是stddev=stddev_pop,都是 1 N Σ i = 1 N ( x i − x m e a n ) 2 sqrt{frac1N Sigma_{i=1}^N(x_i-x_{mean})^2} N1Σi=1N(xi−xmean)2 ,而stddev_samp是 1 N − 1 Σ i = 1 N ( x i − x m e a n ) 2 sqrt{frac1{N-1} Sigma_{i=1}^N(x_i-x_{mean})^2} N−11Σi=1N(xi−xmean)2 。至于用哪个,看你选择了。 例:select stddev_pop(item_a) from table_a; - 方差
var_pop和var_samp,差别同 标准差,不赘述。
致谢:
- https://blog.csdn.net/haramshen/article/details/52668586
- https://www.cxyzjd.com/article/weixin_34883093/112637731



