2013-11-26 2 views
-2

У меня есть система рейтингов в 5 звезд на моей стороне, и я хочу, чтобы посмотреть топ 3 лучших по рейтингу, я использую ниже SQL-запрос:вид только топ 10 из моей звезды рейтинга

SELECT Ranking, Total_value FROM <Table> ORDER BY Rating DESC LIMIT 3; 

но это не» t показывает верхнюю 3, она показывает 3 с наибольшим номером, если 10 человек проголосовали за одну вещь, а 20 человек проголосовали за другую вещь, у которой 20 голосов имеют наибольшее число, но не обязательно имеют самый высокий рейтинг , так как я могу разделить количество голосов с общим рейтингом? поэтому он показывает 3 с лучшим рейтингом

Надеюсь, что кто-то может мне помочь? и понять мой вопрос :)

+1

Знаете ли вы, сколько человек проголосовало? Если нет, вы не сможете полностью усвоить средний показатель. Среднее значение можно найти, добавив все числа вместе, а затем разделив их на количество используемых чисел. – h2ooooooo

+0

Что означает рейтинг и рейтинг? Я полагаю, что рейтинг равен одному голосу, но разве рейтинг не должен рассчитываться с помощью этого запроса, который вы пытаетесь найти? –

+0

Пожалуйста, разместите свои определения таблиц и образцы данных для каждой таблицы. – Shai

ответ

0

Вы можете разделить Total_value с Total_votes:

SELECT 
    Ranking, 
    Total_votes, 
    Total_value, 
    (Total_value/Total_votes) as `Average` 
FROM 
    Votes 
ORDER BY 
    (Total_value/Total_votes) DESC 
LIMIT 10 
+0

спасибо. похоже, что он работает;) – user3035776

+0

, но у меня есть еще один quastion, когда я использую код ниже, он появится на экране следующим образом: name: (bedst rated) имя: (второе постельное название): (третий bedst rated) и так далее. но если я хочу, чтобы это были цифры вместо имени, например: 1. (рейтинг постели) 2. (второй рейтинг постели) и т. д. ..... – user3035776

+0

"; \t \t \t} \t > – user3035776

0

Вы должны создали столбец в базе данных называется average.And обновления среднем каждый раз, когда люди rates.Then использование запроса
ВЫБРАТЬ Рейтинг, Total_value FROM ORDER BY average_value DESC LIMIT 3;

Смежные вопросы