【发布时间】:2014-09-03 01:31:18
【问题描述】:
我有两个用户排名表。 表 rankingA 和 rankingB。 每个表都有列:
- user_id
- 点
- group_id
分数越高,用户/组的排名就越高...
现在我尝试获取我所在组的排名问题的组排名。 到目前为止,我有这个 SQL:
select sum(ra.points) as rapoints, sum(rb.points) as rbpoints from public.rankinga ra
LEFT JOIN public.rankingb rb ON ra.group_id=rb.group_id and ra.user_id=rb.user_id where
ra.group_id=200;
它返回第 200 组的rankinga 和rankinb 的分数。 我怎样才能得到小组的排名?我试过了: row_number() OVER (ORDER BY sum(rb.points) DESC) AS rankb 但得到了错误的结果。
我对 group_id 200 的预期结果是:
rapoints,rbpoints,rarank, rbrank
420, 10, 3, same points as group_id 300 so rbrank 2 or 3
我怎样才能得到这个?
设置
CREATE TABLE rankinga
(
user_id bigint,
group_id bigint,
points integer
)
CREATE TABLE rankingb
(
user_id bigint,
group_id bigint,
points integer
)
insert into public.rankinga (user_id,group_id,points) values (1,100,120),(2,100,300), (3,100,20),(4,200,300),(5,200,120),(6,300,600);
insert into public.rankingb (user_id,group_id,points) values (1,100,5),(2,100,3),(3,100,10),(4,200,2),(5,200,8),(6,300,10);
【问题讨论】:
标签: sql postgresql