SQL - частичная сумма результатов для двух разных столбцов - PullRequest
2 голосов
/ 17 июня 2011

Хорошо, давайте представим, что у меня есть такая таблица:

Name Rank Score
Adam 1    10
Adam 2    20
Adam 3    14
Jane 2    11
Jane 3    14
Jane 4    45
Rick 1    49
Rick 3    24
Rick 5    12

Мне нужно создать набор результатов в одной таблице, в которой суммы SUM занимают 1 и 2 в одном столбце и 3+ во втором столбце.Я могу сделать это в виде двух отдельных операторов SQL, например, так:

SELECT Name, SUM(Score) AS Score1
FROM Table
WHERE Rank < 3
GROUP BY Name

и

SELECT Name, SUM(Score) AS Score2
FROM Table
WHERE Rank > 2
GROUP BY Name

Но я не могу придумать ни одного способа для создания одного оператора SQL, который приводит кодна таблица, которая может выглядеть так:

Name Score1 Score2
Adam 30     14
Jane 11     59
Rick 49     36

Любая помощь приветствуется.Спасибо!

1 Ответ

5 голосов
/ 17 июня 2011

Предполагается, что Ranks являются целыми числами:

SELECT Name, 
    sum(case when Rank in (1, 2) then Score else null end) as Score1,
    sum(case when Rank < 1 or Rank > 2 then Score else null end) as Score2
FROM Table 
GROUP BY Name 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...