目标统计值:均值、方差、标准差、众数、中位数。

  • 均值
    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,都是1NΣi=1N(xi−xmean)2\sqrt{\frac1N \Sigma_{i=1}^N(x_i-x_{mean})^2}N1​Σi=1N​(xi​−xmean​)2​,而stddev_samp是1N−1Σi=1N(xi−xmean)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
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐