У меня есть таблица «voice_benefits» со следующей схемой:
id (int 11)
id_benefit (int 11)
рейтинг (int 11)
мобильный телефон (VARCHAR 10)
дата ввода (дата)
Люди могут голосовать (по звездной рейтинговой системе) за каждый предмет, давая ему от 1 до 5 звезд. Я должен получить количество голосов за каждый рейтинг для каждого пособия.
Контент похож на
id id_b rating cellphone inputdate
1 2 5 123456789 2011-01-04 18:56:38
2 2 4 123456789 2011-01-04 19:03:27
3 2 4 123456789 2011-01-05 10:24:29
4 2 4 123456789 2011-01-05 10:24:33
5 2 5 123456789 2011-01-05 10:24:37
6 2 5 123456789 2011-01-05 10:24:42
7 2 4 123456789 2011-01-05 10:24:43
8 2 5 123456789 2011-01-05 10:24:44
9 2 4 123456789 2011-01-05 10:24:45
10 2 5 123456789 2011-01-05 10:24:48
11 2 5 123456789 2011-01-05 10:25:42
12 3 4 123456789 2011-01-05 10:49:20
13 3 5 123456789 2011-01-05 10:49:21
14 3 4 123456789 2011-01-05 10:49:22
15 3 5 123456789 2011-01-05 10:52:44
16 3 5 123456789 2011-01-05 10:52:45
17 3 4 123456789 2011-01-05 10:53:04
18 3 4 123456789 2011-01-05 10:53:05
Я хочу получить эти самые популярные голосования, сгруппированные по id_benefit
Я добрался до
SELECT id_benefit, count( * ) AS votes, rating
FROM `vote_benefits
GROUP BY id_benefit, rating
что дает мне
id_b votes rating
2 5 4
2 6 5
3 4 4
3 3 5
Но я бы хотел сгруппировать их по id_b, получив только строку с наибольшим количеством голосов для каждого id_b:
id_b votes rating
2 6 5
3 4 4
Я прочитал ссылки типа SQL - выберите отдельные записи в одном поле с наибольшим количеством записей в другом поле , но я не понимаю, как адаптировать его для своих нужд.