MySQL group by,具有多个列和,每个组的总和
我有一张这样的桌子:MySQL group by,具有多个列和,每个组的总和,mysql,sql,Mysql,Sql,我有一张这样的桌子: Votes (id, person, positive_vote, negative_vote) 我想按个人分组,并按每个人的总投票数排序。我知道如何计算一组人的单列总票数,但我不知道如何计算每组人的总票数 以下是我目前掌握的情况: SELECT person, sum(positive_vote), sum(negative_vote) FROM Votes GROUP BY person; 如果您想要每个人的总票数,只需减去总票数,或者如果您只想要总票数,则将其相加
Votes (id, person, positive_vote, negative_vote)
我想按个人分组,并按每个人的总投票数排序。我知道如何计算一组人的单列总票数,但我不知道如何计算每组人的总票数
以下是我目前掌握的情况:
SELECT person, sum(positive_vote), sum(negative_vote) FROM Votes GROUP BY person;
如果您想要每个人的总票数,只需减去总票数,或者如果您只想要总票数,则将其相加:
SELECT person, sum(positive_vote), sum(negative_vote),
SUM(positive_vote)-SUM(negative_vote)
FROM Votes
GROUP BY person
请注意,我在这里减去了总和,而没有对列本身的差值求和,因为我不知道如何在表中存储数据,空值可以在数学上做一些有趣的事情。试试
SELECT person,
sum(positive_vote) totalPositive,
sum(negative_vote) totalNegative,
(sum(positive_vote) + sum(negative_vote)) totalVotes
FROM Votes
GROUP BY person
-- HAVING (sum(positive_vote) + sum(negative_vote)) < 5
你是说赞成票和反对票的总和吗
SELECT
person,
SUM(positive_vote) AS positive_votes,
SUM(negative_vote) AS negative_votes,
SUM(positive_vote + negative_vote) AS total_votes
FROM Votes GROUP BY person;
你知道有没有可能在全票上加一个WHERE?我有个错误。我在末尾加了这样一个词:“一组一组,总票数<5;”@ScottBartell使用having代替where,使用sumpositive_vote+sumnegative_vote<5FYI:我必须使用IFNULLSUMcol1,0+IFNULLSUMcol2,0。否则,计算失败,结果为空。
SELECT
person,
SUM(positive_vote) AS positive_votes,
SUM(negative_vote) AS negative_votes,
SUM(positive_vote + negative_vote) AS total_votes
FROM Votes GROUP BY person;
SELECT person,
sum(positive_vote) as totalPositive,
sum(negative_vote) as totalNegative,
(sum(positive_vote + negative_vote)) as totalVotes
FROM Votes
GROUP BY person