如何将这两个PSQL查询正确地连接在一起?

操作操作

我正在尝试返回一个查询,该查询将显示玩家在游戏中玩了多少次以及他/她赢得了多少次。到目前为止,这是我在最后一个联接查询上遇到的问题

链接到我的SQL小提琴:http://sqlfiddle.com/#!15 / 46b2a / 52

我有两个表:

CREATE TABLE player(
id serial PRIMARY KEY NOT NULL,
name varchar(255) NOT NULL
);

CREATE TABLE match(
id serial PRIMARY KEY,
winner serial REFERENCES player(id) NOT NULL,
loser serial REFERENCES player(id) NOT NULL CHECK (loser != winner)
);

CREATE SEQUENCE playerid_sequence 
start 1
increment 1;

CREATE SEQUENCE matchid_sequence
start 1
increment 1;

我用一些示例插入填充了表格:

--Player Insertion 
INSERT INTO player VALUES(nextval('playerid_sequence'), 'Kevin');
INSERT INTO player VALUES(nextval('playerid_sequence'), 'Dennis');
INSERT INTO player VALUES(nextval('playerid_sequence'), 'George');
INSERT INTO player VALUES(nextval('playerid_sequence'), 'Michael');

--Match Insertion
INSERT INTO match VALUES(nextval('matchid_sequence'), 1, 2);
INSERT INTO match VALUES(nextval('matchid_sequence'), 1, 3);
INSERT INTO match VALUES(nextval('matchid_sequence'), 1, 4);
INSERT INTO match VALUES(nextval('matchid_sequence'), 2, 3);

我创建了两个SQL查询:

--How many did a player win?
SELECT player.id, player.name, count(player.name) as wins FROM player, match 
WHERE player.id = match.winner GROUP by player.name, player.id ORDER BY wins DESC;

--How many matches did a particular player participate in?
SELECT player.id, player.name, count(player.name) as matches_played
FROM player, match
WHERE player.id = match.winner OR player.id = match.loser 
GROUP by player.name, player.id
ORDER by matches_played DESC;

我尝试加入他们:

SELECT 
* 
FROM
(SELECT player.id, player.name, count(player.name) as wins FROM player, match 
WHERE player.id = match.winner GROUP by player.name, player.id ORDER BY wins DESC) t1 
FULL OUTER JOIN
(SELECT player.id as id, count(player.name) as matches_played
FROM player, match
WHERE player.id = match.winner OR player.id = match.loser 
GROUP by player.id
ORDER by matches_played DESC) t2
ON t1.id = t2.id;

上面的join查询仅返回t1的一组玩家,而我希望它返回t2的所有玩家。

我想要:玩家ID | 名称| 胜| 所有玩家的总比赛数,如果未赢,则胜利列中为0。

我有:

 id name    wins    id  matches_played
 1  Kevin   3       1    3
 2  Dennis  1       2    2
 (null) (null)  (null)  4   1
 (null) (null)  (null)  3   2
斯坦

我认为查询可以简化为:

select p.id, p.name,
       count(case when m.winner = p.id then 'X' end) as wins,
       count(m.id) as matches_played
  from player p
  left join match m
    on m.winner = p.id or m.loser = p.id
 group by p.id, p.name;

SQL小提琴演示

关键是您要在match上保留联接剩下的就是简单的条件聚合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将两个as_json方法正确地组合在一起?

来自分类Dev

如何将这两个查询结合在一起?(MySQL)

来自分类Dev

如何将两个图像连接在一起?

来自分类Dev

如何将两个壁板连接在一起以形成贯通?

来自分类Dev

如何将两个实体对象连接在一起?

来自分类Dev

如何将两个离子应用程序连接在一起?

来自分类Dev

如何将两个表连接在一起以创建 JSON | PHP

来自分类Dev

如何将RxJS可观察对象与for循环正确地链接在一起?

来自分类Dev

如何将两个数据框连接在一起

来自分类Dev

如何将两个子网连接在一起

来自分类Dev

如何将这两个ng级句子混在一起

来自分类Dev

如何修复将两个表连接在一起的错误

来自分类Dev

SQL如何通过特定的列将两个表连接在一起?

来自分类Dev

如何将两个任务集合链接在一起?

来自分类Dev

在导入查询中将两个单元格连接在一起

来自分类Dev

如何将两个列与一个序列化数据联接在一起?

来自分类Dev

如何将两个不同的表连接在一起并合计为第三个表

来自分类Dev

python-如何将两个列值在某个特定2个范围内的数据框连接在一起python?

来自分类Dev

如何正确地将此PHP echo语句与字符串和函数连接在一起?

来自分类Dev

如何将一个表与来自不同查询的分组值连接在一起?

来自分类Dev

如何正确地将这些字符串连接在一起(按列然后按行)?

来自分类Dev

如何正确地将这些字符串连接在一起(按列然后按行)?

来自分类Dev

如何将两个联合查询添加在一起

来自分类Dev

将两个numpy数组按索引连接在一起

来自分类Dev

将两个文件连接在一起(AWK)

来自分类Dev

将两个VGA输出端口连接在一起是否安全?

来自分类Dev

将两个HTML脚本连接在一起

来自分类Dev

将两个不同的url请求的结果连接在一起

来自分类Dev

将C#中的两个列表对象连接在一起

Related 相关文章

  1. 1

    如何将两个as_json方法正确地组合在一起?

  2. 2

    如何将这两个查询结合在一起?(MySQL)

  3. 3

    如何将两个图像连接在一起?

  4. 4

    如何将两个壁板连接在一起以形成贯通?

  5. 5

    如何将两个实体对象连接在一起?

  6. 6

    如何将两个离子应用程序连接在一起?

  7. 7

    如何将两个表连接在一起以创建 JSON | PHP

  8. 8

    如何将RxJS可观察对象与for循环正确地链接在一起?

  9. 9

    如何将两个数据框连接在一起

  10. 10

    如何将两个子网连接在一起

  11. 11

    如何将这两个ng级句子混在一起

  12. 12

    如何修复将两个表连接在一起的错误

  13. 13

    SQL如何通过特定的列将两个表连接在一起?

  14. 14

    如何将两个任务集合链接在一起?

  15. 15

    在导入查询中将两个单元格连接在一起

  16. 16

    如何将两个列与一个序列化数据联接在一起?

  17. 17

    如何将两个不同的表连接在一起并合计为第三个表

  18. 18

    python-如何将两个列值在某个特定2个范围内的数据框连接在一起python?

  19. 19

    如何正确地将此PHP echo语句与字符串和函数连接在一起?

  20. 20

    如何将一个表与来自不同查询的分组值连接在一起?

  21. 21

    如何正确地将这些字符串连接在一起(按列然后按行)?

  22. 22

    如何正确地将这些字符串连接在一起(按列然后按行)?

  23. 23

    如何将两个联合查询添加在一起

  24. 24

    将两个numpy数组按索引连接在一起

  25. 25

    将两个文件连接在一起(AWK)

  26. 26

    将两个VGA输出端口连接在一起是否安全?

  27. 27

    将两个HTML脚本连接在一起

  28. 28

    将两个不同的url请求的结果连接在一起

  29. 29

    将C#中的两个列表对象连接在一起

热门标签

归档