php从数据库计算前十%?

时间:2014-02-14 21:01:57

标签: php mysql percentile

我已成功运行此搜索,可返回玩家的技能和属性。我希望在特定列中获得前十个百分点。我试图用这个:

$j=0;
while($percentile_row = mysql_fetch_array($percentile_result)){
    echo $percentile_row['user_id'].'<br />';
    $j++;
}
echo 'Total: '.$j.'<br />';
echo round(100/$j,1);

$players_worth = round(100/$j,1);

while($players_worth > 10){
    echo 'adding<br/>';
    $players_worth + $players_worth;
}

这似乎是一种简单的方法。只是当 $ players_worth + $ players_worth; 部分在while循环中时不起作用。如果我只是回应它,它就有效。

或者我可以在查询中添加一些内容,以便按百分比进行选择吗?我必须为大约15列做到这一点。

这是我现有的查询:

SELECT user_id FROM Players ORDER BY user_id DESC

感谢您提供的任何提示。

修改
我试过这个,但没有运气,当我var_dump它,它只是说“bool(false)”: MySQL: LIMIT by a percentage of the amount of records?

2 个答案:

答案 0 :(得分:0)

如果您已经知道数据库中的记录数,则可以使用LIMIT:

"SELECT user_id FROM Players ORDER BY user_id DESC LIMIT ".$rowCount*$percentage/100

我不知道在查询中使用百分比直接的方法,除非你已经知道你正在检查的值的截止点,这意味着你已经经历了数据库并检查了所有的值。

答案 1 :(得分:0)

我明白了,我就是这样做的:

首先我获得所有行,然后......

echo 'Total rows in table: '.$j.'<br />';

$twentyfive = floor($j*.25);
$fifteen = floor($j*.15);
$ten = floor($j*.1);


echo $ten.' '.$fifteen.' '.$twentyfive.'<br /><br />';


$topten=0;

while($topten < $ten && $percentile_row2 = mysql_fetch_array($percentile_result2)){

    $change =   "UPDATE Players SET " . $column['field'] ."=concat(" . $column['field'] . ",'%') WHERE user_id='" . $percentile_row2['user_id'] . "'";

    $wpdb->get_results($change);

    echo '<strong>in top 10%</strong> - '.$percentile_row2['field_1'].' - '.$percentile_row2['user_id'].'<br />';

$topten++;

}

等等其他百分位数。所有的回声都只是为了追踪它。