有人可以给我一个提示,如何在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)。
感谢您关注我的问题!
答案 0 :(得分: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"];