Sql 在物化视图中合并两个查询结果

Sql 在物化视图中合并两个查询结果,sql,postgresql,Sql,Postgresql,我正在尝试将两个选择结果合并到一个视图中。 第一个查询返回所有注册用户的id。 第二个查询遍历整个表,计算一个玩家的胜利数,并返回该玩家的id和胜利数 我现在要做的是合并这两个结果,这样如果用户赢了,它会说有多少,如果他没有赢,它会说0 我试着这样做: SELECT profile.user_id FROM profile FULL JOIN ( SELECT player_game_data.user_id, count(player_game_data.user_

我正在尝试将两个选择结果合并到一个视图中。 第一个查询返回所有注册用户的id。 第二个查询遍历整个表,计算一个玩家的胜利数,并返回该玩家的id和胜利数

我现在要做的是合并这两个结果,这样如果用户赢了,它会说有多少,如果他没有赢,它会说0

我试着这样做:

SELECT profile.user_id
 FROM profile
   FULL JOIN ( SELECT player_game_data.user_id,
          count(player_game_data.user_id) AS wins
         FROM player_game_data
        WHERE player_game_data.is_winner = 1
        GROUP BY player_game_data.user_id) t2 ON profile.user_id::text = t2.user_id::text;
但最终它只返回玩家的id,没有计数列:

我做错了什么?这是你想要的吗

select p.*,
       (select count(*)
        from player_game_data pg
        where pg.user_id = p.user_id and pg.is_winner = 1
       ) as num_wins
from profile p;
或者,如果所有用户至少玩过一个游戏,则可以使用条件聚合:

select pg.user_id,
       count(*) filter (where pg.is_winner = 1)
from player_game_data pg
group by pg.user_id;
或者,如果
是赢家
只接受
0
1
的值:

select pg.user_id, sum(ps.is_winner)
from player_game_data pg
group by pg.user_id;

谢谢你的帮助,戈登。我现在要工作了

最终查询如下所示:

 SELECT p.user_id,
    ( SELECT count(*) AS count
           FROM player_game_data pg
          WHERE pg.user_id::text = p.user_id::text AND pg.is_winner = 1) AS wins,
    ( SELECT count(*) AS count
           FROM player_game_data pg
          WHERE pg.user_id::text = p.user_id::text AND pg.is_winner = 0) AS losses,
    ( SELECT count(*) AS count
           FROM player_game_data pg
          WHERE pg.user_id::text = p.user_id::text) AS games_played
   FROM profile p;
当我运行它时,我得到了我想要的结果:

(1)如果您使用的是
完全连接
,那么您没有使用MySQL,因此我删除了标记。(2) 将代码作为文本而不是图像放入问题中。(3) 如果你想在最终结果集中选择一列,你需要在
select
中选择它。第一个解决方案工作得非常好,我只是编辑了它而不是p.*我使用了p.user\u id,因为这就是我所需要的。只有一些玩家玩过一场游戏,我现在试着从一个角度展示一个玩家玩过多少场赢、输和游戏。谢谢你的帮助!