Я хочу вычислить среднее значение для рейтинговой системы, но у меня есть нормальная таблица в InnoDB и один столбец в формате JSON с именем: «обзоры» с этой структурой:вычислить среднее значение для рейтинговой системы
{"comments":
[
{"name": "Jonh", "text": "nice phone", "star": 4},
{"name": "igon", "text": "not good", "star": 2},
{"name": "marco", "text": "i not like this", "star": 3},
{"name": "david", "text": "good product", "stelle": 5}
]
}
сейчас Мне нужно рассчитать среднюю звезду. он находится в sql или php? В SQL Server я не знаю, как в PHP У меня есть проблема с запросом на экстракте только все звезды, например:
$reviews_nn = $rowprod["reviews"];
$reviews = json_decode($reviews_nn,true);
$max = 0;
$n = 0;
foreach ($reviews[comments][star] as $rate => $count) {
echo 'Seen ', $count, ' ratings of ', $rate, "\n";
$max += $rate * $count;
$n += $count;
}
echo 'Average rating: ', $max/$n, "\n";
Но результат NAN ... Не целое? Это целое число звезд ...
звезда = 4
не звезда = «4»
Я надеюсь, что вы можете мне помочь .... Танки !!!
Что это за '$ review_nn = $ rowprod [" reviews "];'? а также '$ reviews ['comments'] ['star'] as $ rate => $ count', но все равно это не сработает. Думаю –
' $ отзывы [комментарии] [star] 'не массив. .. – DevDonkey
Как это часто бывает, решение заключается в нормализации ваших данных. – symcbean