7

次のようなテーブルがあります。

Votes (id, person, positive_vote, negative_vote)

人ごとにグループ化し、各人の総投票数で並べ替えたいと思います。グループの 1 つの列の合計を取得する方法は知っていますが、各グループのすべての合計 (総投票数) の合計を取得する方法がわかりません。

これが私がこれまでに持っているものです:

SELECT person, sum(positive_vote), sum(negative_vote) FROM Votes GROUP BY person;
4

5 に答える 5

18

試す、

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
于 2012-09-28T02:07:51.077 に答える
3

各人の合計が必要な場合は、合計を差し引くだけです (または、合計投票数が必要な場合は、代わりにそれらを追加します)。

SELECT person, sum(positive_vote), sum(negative_vote),
    SUM(positive_vote)-SUM(negative_vote)
FROM Votes 
GROUP BY person

ここで合計を減算し、列自体の差を合計していないことに注意してください。これは、テーブルにデータを格納する方法がわからず、NULL が数学でおかしなことをする可能性があるためです。

于 2012-09-28T02:07:45.563 に答える
2
SELECT Z.person,Z.sum_pv,Z.sum_nv,Z.diff_sum_pv_nv
FROM
(SELECT person, sum(positive_vote) AS sum_pv, sum(negative_vote) sum_nv,sum(positive_vote) - sum(negative_vote) AS diff_sum_pv_nv
FROM Votes GROUP BY person)Z;
于 2012-09-28T02:07:23.230 に答える
1

あなたはpositive_voteとnegative_voteの合計を意味しますか?

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;
于 2012-09-28T02:08:44.903 に答える
0
SELECT person, 
       sum(positive_vote) as totalPositive, 
       sum(negative_vote) as totalNegative,
       (sum(positive_vote + negative_vote)) as totalVotes
FROM Votes 
GROUP BY person
于 2016-02-23T06:19:42.027 に答える