SQL - 如何在同一查询中使用SUM和MAX?

时间:2009-08-22 20:16:50

标签: database mysql

我正在使用MySQL数据库版本5.0.41(和PHP 5.2.6,虽然这可能与此问题无关)。

我有一个名为votes的表,其中包含以下字段:iditem_idvote_value。 每当站点上的用户对项目提交肯定投票时,将创建具有相应item_id和正数(即1)的新行。当投票结果为负时,将创建一行,其中包含相应的item_id和一个负数(即-1)。 我想用一个查询(如果可能的话)选择投票最多的item_id。 要做到这一点,我首先需要总结每个人item_id的所有投票(得到一个像38或-14这样的数字),然后选择该数字的最大值。 我不知道如何为此编写查询。

你可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

SELECT item_id, SUM(vote_value) AS sum
FROM votes
GROUP BY item_id
ORDER BY sum DESC
LIMIT 1

答案 1 :(得分:1)

您可以执行以下操作:

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