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