MySQL выбрать самый высокий рейтинг

0

У меня есть 2 столбца, один называется rating_average и один называется rating_count.

Мне нужно выбрать 3 строки с наивысшим рейтингом с оценкой, учтенной в уравнении.

  • 0
    «... с наивысшим рейтингом с учетом рейтинга, включенного в уравнение». Я не понимаю, что вы подразумеваете под этим. Подсчет является аспектом среднего значения, он уже «учтен» ( average = sum / count [в основном]).
Теги:

5 ответов

2
Лучший ответ

Вы можете сделать математику в порядке порядка, например:

select    *
from      YourTable
order by  rating_average * rating_count DESC
limit     3

В MySQL вы можете добавить limit в конце запроса, чтобы ограничить набор строк в первые N строк.

Если вы приведете пример, мы могли бы, вероятно, предоставить вам более конкретное решение.

1
SELECT *
FROM table
ORDER BY rating_average DESC,
         rating_count DESC
LIMIT 3

Это дает первые 3 строки, отсортированные сначала по рейтингу, а затем по рейтингу_count.

Пример:

=================================
| rating_average | rating_count |
=================================
|       9.1      |       5      |
|       8.9      |       9      |
|       8.9      |       3      |
=================================
  • 0
    -1 Два order by подряд дают синтаксическую ошибку
  • 0
    ошибка копирования и вставки исправлена
Показать ещё 1 комментарий
0

Если у вас нет рейтинга rating_average и rating_count, но вы все равно хотите получить результаты, данные Andomar, вот полный запрос, используя только таблицы 'products' и 'reviews'



    SELECT products.title,reviews.fk_productid,
    COUNT(reviews.review_id) AS review_count,
    AVG(reviews.rating) AS rating_average,
    COUNT(reviews.review_id) * AVG(reviews.rating) AS total_score 
    FROM reviews
    INNER JOIN products
    ON products.product_id = reviews.fk_productid
    GROUP BY fk_productid
    ORDER BY total_score DESC

0
SELECT * FROM table ORDER BY rating_average DESC LIMIT 3

Это может сработать, но вы должны опубликовать схему, чтобы мы могли точно видеть, что вы хотите.

0

Как вы хотите точно учитывать рейтинг? Если вы хотите ограничить его, указав элементы с рейтингом не менее 3, вы можете сделать это:

SELECT rating_average, rating_count
FROM mytable
WHERE rating_count > 3
ORDER BY rating_average DESC
LIMIT 3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню