SQLite сумма сумм - PullRequest
       4

SQLite сумма сумм

0 голосов
/ 16 октября 2018

Допустим, у меня есть две таблицы, которые выглядят следующим образом:

Games:
| AwayTeam  | HomeTeam     | AwayPoints | HomePoints |
------------------------------------------------------
| Aardvarks | Bobcats      | 2          | 1          |
| Bobcats   | Caterpillars | 20         | 10         |
| Aardvarks | Caterpillars | 200        | 100        |

Teams:
| Name         | 
----------------
| Aardvarks    | 
| Bobcats      |
| Caterpillars |

Как я могу получить результат, который выглядит следующим образом?

| Name         | TotalPoints |
------------------------------
| Aardvarks    | 202         |
| Bobcats      |  21         | 
| Caterpillars | 110         |

Я думаю, что моя настоящая проблема заключается в том, как объединить операторы в SQL.Эти два оператора хорошо работают по отдельности:

SELECT SUM ( AwayPoints ) 
FROM   Games 
WHERE  AwayTeam='Bobcats';

SELECT SUM ( HomePoints ) 
FROM   Games 
WHERE  HomeTeam='Bobcats';

Я подозреваю, что мне нужен составной оператор , если я хочу соединить два SELECT оператора вместе.Затем передайте это утверждение в обобщенное выражение, приведенное ниже:

SELECT   Name, SUM( aggregate_expression ) 
AS       'TotalPoints' 
FROM     Teams 
GROUP BY Name;

Если бы мне пришлось просто сложить все это вместе, я бы подумал, что получится что-то вроде этого:

SELECT   Name, SUM (
    SELECT SUM ( AwayPoints ) 
    FROM   Games 
    WHERE  AwayTeam=Name 
  UNION 
    SELECT SUM ( HomePoints )
    FROM   Games 
    WHERE  HomeTeam=Name
)
AS       'TotalPoints' 
FROM     Teams 
GROUP BY Name;

Однако это не работает, потому что SELECT SUM ( SELECT ... полностью недействительно

1 Ответ

0 голосов
/ 16 октября 2018

Используйте UNION ALL

SELECT team, SUM(points)
FROM (
  SELECT HomeTeam AS team, SUM(HomePoints) AS points
  FROM Games
  GROUP BY HomeTeam
 UNION ALL
  SELECT AwayTeam AS team, SUM(AwayPoints) AS points
  FROM Games
  GROUP BY AwayTeam
)
GROUP BY team

См. Документацию SQLite для

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...