PostgreSQL |合并查询结果

时间:2020-08-02 01:59:23

标签: sql postgresql

我这里的情况很“简单”,但我自己无法解决。因此,我需要将第一个查询的结果与第二个查询的结果相结合,以获得“最终结果”。

第一个查询获取按玩家拍摄的张数。

SELECT player, COUNT(shot) shots FROM table1 GROUP BY player;
+---------+-------+
| player  | shots |
+---------+-------+
| player1 | 10    |
+---------+-------+
| player2 | 10    |
+---------+-------+

第二个是获得点击。

SELECT player, COUNT(hit) hits FROM table2 GROUP BY player;
+---------+-------+
| player  | hits  |
+---------+-------+
| player1 | 10    |
+---------+-------+
| player2 | 5     |
+---------+-------+

我需要计算准确度(命中/击球* 100),并显示类似结果。

+---------+-------+------+-----+
| player  | shots | hits | acc |
+---------+-------+------+-----+
| player1 | 10    | 10   | 100 |
+---------+-------+------+-----+
| player2 | 10    | 5    | 50  |
+---------+-------+------+-----+

1 个答案:

答案 0 :(得分:2)

您可以在汇总后使用join

SELECT player, s.shots, h.hits
FROM (SELECT player, COUNT(shot) as shots
      FROM table1
      GROUP BY player
     ) s JOIN
     (SELECT player, COUNT(hit) as hits
      FROM table2
      GROUP BY player
     ) h
     USING (player);

您真的打算COUNT()吗?看来SUM()会更合适。

此外,这只会返回两个表中的玩家。如果您想让任一表中的玩家,请使用FULL JOIN