2016-03-25 2 views
0

Я работаю над проектом, где мне приходится перечислять решения с наивысшим количеством голосов за каждую проблему.Строка SQL SELECT с наивысшим значением где проблема_ид одинакова

У каждой проблемы есть два решения, и пользователи могут голосовать по одному решению на каждую проблему. Это моя база данных на данный момент.

+----------+------------+---------+ 
| id | id_problem | vote | 
+----------+------------+---------+ 
| 1  |  1  | 25 | 
| 2  |  1  | 10 | 
| 3  |  2  | 18 | 
| 4  |  2  | 2 | 
| 5  |  3  | 6 | 
| 6  |  3  | 7 | 
| 7  |  4  | 11 | 
| 8  |  4  | 4 | 
| 9  |  5  | 5 | 
| 10 |  5  | 2 | 
+----------+------------+---------+ 

Я хотел бы получить этот результат: (строка с самым высоким голосом на id_problem)

+----------+------------+---------+ 
| id | id_problem | vote | 
+----------+------------+---------+ 
| 1  |  1  | 25 | 
| 3  |  2  | 18 | 
| 6  |  3  | 7 | 
| 7  |  4  | 11 | 
| 9  |  5  | 5 | 
+----------+------------+---------+ 

ответ

0
SELECT 
    id, 
    id_problem, 
    max(vote) 
from 
    tablename 
group by 
    id_problem 
order by 
    id_problem ASC 

Максимальный (голос) определяет больший голос, но совокупный результат, то вам нужно сгруппировать по id_problem, а затем заказать его Asc.

0

Вы можете использовать group by положение с max функции агрегации, чтобы получить ожидаемый результат, например:

select id, id_problem, max(vote) as vote 
from result 
group by id_problem 
order by id_problem 

Вот SQL Fiddle ,

+0

Я не уверен, хочет ли он идентификатор, так как это ПК. – bassxzero

+0

Отредактирован ответ .. –

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

  • Нет связанных вопросов^_^