やあ、私は使用mysql
ROUND
とAVG
機能に縛られています、
public function get_average_rating_by_specialty($shop_id,$where_array=array())
{
$this->replica->select('PreferenceToLOBID,PreferenceID , AVG(ROUND(AvarageRating)) as AvarageRating');
$this->replica->from('*******');
$this->replica->where(array('ShopID'=>$shop_id,'IsDelete'=>0));
if($where_array)
{
$this->replica->where($where_array);
}
$this->replica->group_by('PreferenceID,PreferenceToLOBID');
$result = $this->replica->get();
return $result->result_array();
}
ここでは、値を丸めた後に平均値を取得しようとしていAvarageRating
ます。
その行の条件に一致するレコードは 1 つだけです。AvarageRating
値は 4.5 です。
しかし、クエリ結果は
Array
(
[0] => Array
(
[PreferenceToLOBID] => 29
[PreferenceID] => 654
[AvarageRating] => 4.0000
)
)
これを削除すると正しく機能しますが、平均を取得する前に値ROUND
を丸めたいAvarageRating
この場合、結果として 4.5 が期待されます。なぜ 4 が返されるのか
助けてください、よろしくお願いします。