谁能告诉我如何在 12.04.18 - 16.04.18 期间找到“税收”的中值:
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(因为有NULL值,我们需要把它当作0)。
感谢您关注我的问题!
中位数就是值
- 恰好位于奇数数据集的中间。
- 或者偶数数据集中两个中间值的平均值。
因此,考虑到这两种情况,您首先需要的是数据行数。然后,您必须决定(简单情况)是选择中间的值,还是需要两个值的平均值(不要忘记在选择实际值之前应用排序):
我会使用一些“代码”来实现这一点:
伪代码:
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"];