SQL - Как использовать SUM и MAX в одном запросе? - PullRequest
0 голосов
/ 23 августа 2009

Я работаю с базой данных MySQL версии 5.0.41 (и PHP 5.2.6, хотя это может не относиться к этому вопросу).

У меня есть таблица с именем votes со следующими полями: id, item_id, vote_value. Каждый раз, когда пользователь на сайте отправляет положительный голос за элемент, создается новая строка с соответствующим item_id и положительным числом (т.е. 1). Когда голосование является отрицательным, создается строка с соответствующим item_id и отрицательным числом (т.е. -1). Я хотел бы выбрать с одним запросом (если возможно), item_id, который имеет наибольшее количество голосов. Чтобы сделать это, мне сначала нужно сложить все голоса по каждому человеку item_id (чтобы получить число, подобное 38 или -14), а затем выбрать максимум для этого числа. Я не уверен, как написать запрос для этого.

Не могли бы вы помочь?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 августа 2009
SELECT item_id, SUM(vote_value) AS sum
FROM votes
GROUP BY item_id
ORDER BY sum DESC
LIMIT 1
1 голос
/ 23 августа 2009

Вы можете сделать что-то вроде:

SELECT item_id, SUM(vote_value) AS total, COUNT(id) AS c
FROM votes
GROUP BY item_id
ORDER BY total DESC, c DESC
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...