如何选择中值?

l0oc07j2  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(290)

这个问题在这里已经有答案了

用mysql计算中值的简单方法(39个答案)
两年前关门了。
有谁能告诉我如何在2018年4月12日至2018年4月16日期间找到“税”的中间值:

user_id  login_time  tax
3       2018-04-15   16625000
5       2018-04-16      
6       2018-04-17   296470000
6       2018-04-16   192519750
6       2018-04-15   4455500
6       2018-04-13   17125
6       2018-04-12   120180000
7       2018-04-18   24060000
7       2018-04-17   42959500

结果等于16625000(因为有空值。我们需要将其用作0)。
谢谢你关注我的问题!

ztmd8pv5

ztmd8pv51#

中间值是
恰好位于奇数数据集的中间。
或偶数数据集中两个中间值的平均值。
因此,考虑这两种情况,首先需要的是数据行的计数。然后,您必须决定(简单的情况)是选择中间的值,还是需要两个值的平均值(在选择实际值之前不要忘记应用排序):
我会用一点“代码”来实现这一点:
伪代码:

1.) SELECT count(id) AS val FROM myTable WHERE datetime ... //$val=9
2.) Programming language: $lim = floor($val/2); // $lim=4

if odd($val){
  3.) SELECT tax FROM myTable WHERE datetime [...] ORDER BY tax LIMIT $lim,1 
}

else if even($val){
  3.) Programming language: $lim -=1; // if $val was 10, we want row 4 and 5
  4.) SELECT AVG(tax) AS tax FROM 
       (SELECT * FROM myTable WHERE datetime [...] ORDER BY tax LIMIT $lim,2) AS tmp
}
[...]
echo "Median is: ". $row["tax"];

相关问题