我这里的情况很“简单”,但我自己无法解决。因此,我需要将第一个查询的结果与第二个查询的结果相结合,以获得“最终结果”。
第一个查询获取按玩家拍摄的张数。
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 | +---------+-------+------+-----+
答案 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
。