gpt4 book ai didi

php - 计算列mysql的中位数

转载 作者:行者123 更新时间:2023-11-29 06:34:29 31 4
gpt4 key购买 nike

我在mysql中有以下列,

面积、价格、类型、季度、年份等

我想做的是计算这些条件下每个区域(Juffair、Adliya、Mahooz)的中位数。

典型的一行看起来像这样

Burhama, 500, Apartment, 3, 2014..
Burhama, 600, Apartment, 3, 2014
Juffair, 800, Apartment, 3, 2014 etc.

我想要它做的是显示一个带有(面积 - 中位数)的表格。所以它应该取整个 Juffair 并计算中位数。等等

它正在做的是:显示每个区域(重复次)及其旁边的价格。

在循环中移动,我让它只显示区域,但计算所有区域的中位数,而不仅仅是它应该显示的区域。

如有任何帮助,我们将不胜感激。

<?php
function calculate_median($arr) {
sort($arr);
$count = count($arr); //total numbers in array
$middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value
if($count % 2) { // odd number, middle is the median
$median = $arr[$middleval];
} else { // even number, calculate avg of 2 medians
$low = $arr[$middleval];
$high = $arr[$middleval+1];
$median = (($low+$high)/2);
}
return $median;
}
?>


<?php

$array = array('Juffair', 'Adliya', 'Mahooz', 'Burhama' , 'Manama');
$price = array();
//connect
$data = mysql_query("SELECT * FROM stats
WHERE `rentsale` = 'Rent'
and `type` = 'Apartment'
and `area` IN('".implode("', '", $array)."')
and `beds` = '2'
and `quarter` = '3'
and `year` = '2014'")
//die
while($info = mysql_fetch_array( $data )) {

$area = $info['area'];
$array = array('Juffair', 'Adliya', 'Mahooz', 'Burhama' , 'Manama');
foreach( $array as $area ) {
$price[] = $info['price'];
$home_values_array = $price;
$median_home_value = calculate_median($home_values_array);
}
?>
<table>
<tr>
<TD><?php echo $area; ?></TD>
<TD><?php echo $median_home_value; ?></TD>
</tr>
</table>
<?php

}


?>

最佳答案

如果您想在 MySQL 中计算中位数,我建议使用变量(引用答案均未建议):

select area, avg(price) as median
from (select s.*,
(@rn := if(@a = area, @rn + 1,
if(@a := area, 1, 1)
)
) seqnum
from stats s cross join
(select @a := '', @rn := 0) vars
order by area, price
) s join
(select area, count(*) as cnt
from stats
group by area
) a
on s.area = a.area
where 2*seqnum in (cnt - 1, cnt, cnt + 1)
group by area;

上述查询计算所有数据的中位数。第一个子查询枚举值,第二个子查询获取总计数。

如果你想要一个过滤器,比如按年,那么你需要将它添加到两个子查询中。

关于php - 计算列mysql的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25831609/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com