Я пытаюсь набрать наибольшее количество голосов в зависимости от страны, города и института. Тем не менее, я получаю неправильный вывод.
Мой код:
SELECT u.user_id, u.country, u.city, u.institute, uv.up_vote, uv.down_vote,
RANK() OVER (PARTITION BY country ORDER BY SUM(uv.up_vote) + SUM(uv.down_vote) DESC) country_rank,
RANK() OVER (PARTITION BY city ORDER BY SUM(uv.up_vote) + SUM(uv.down_vote) DESC) city_rank,
RANK() OVER (PARTITION BY institute ORDER BY SUM(uv.up_vote) + SUM(uv.down_vote) DESC) institute_rank
FROM Users u LEFT JOIN users_vote uv ON u.user_id=uv.receiver_id
GROUP BY u.user_id, u.country, u.city, u.institute, uv.up_vote, uv.down_vote;
Мой вывод:
user_id | country | city | institute | up_vote | down_vote | country_rank | city_rank | institute_rank
---------+---------+---------------+--------------------------+---------+-----------+--------------+-----------+----------------
18 | Canada | Ottawa | University of Ottawa | | | 1 | 1 | 1
20 | Canada | Ottawa | University of Ottawa | | | 1 | 1 | 1
17 | Canada | Toronto | University of Ottawa | 10 | 0 | 3 | 1 | 3
26 | USA | Santa Clara | UCSD | | | 1 | 1 | 1
25 | USA | Seattle | University of Washington | | | 1 | 1 | 1
27 | USA | Los Angeles | UCLA | | | 1 | 1 | 1
22 | USA | New York | NYU | | | 1 | 1 | 1
21 | USA | San Francisco | CalTech | | | 1 | 1 | 1
23 | USA | Texas | University of Texas | 10 | 0 | 6 | 1 | 1
16 | test123 | test123 | test123 | | | 1 | 1 | 1
То, что я хочу, чтобы мой вывод был
user_id | country | city | institute | up_vote | down_vote | country_rank | city_rank | institute_rank
---------+---------+---------------+--------------------------+---------+-----------+--------------+-----------+----------------
18 | Canada | Ottawa | University of Ottawa | | | 2 | 1 | 2
20 | Canada | Ottawa | University of Ottawa | | | 2 | 1 | 2
17 | Canada | Toronto | University of Ottawa | 10 | 0 | 1 | 1 | 1
26 | USA | Santa Clara | UCSD | | | 2 | 1 | 1
25 | USA | Seattle | University of Washington | | | 2 | 1 | 1
27 | USA | Los Angeles | UCLA | | | 2 | 1 | 1
22 | USA | New York | NYU | | | 2 | 1 | 1
21 | USA | San Francisco | CalTech | | | 2 | 1 | 1
23 | USA | Texas | University of Texas | 10 | 0 | 1 | 1 | 1
16 | test123 | test123 | test123 | | | 2 | 1 | 1
ТАБЛИЦА users_vote
receiver_id | up_vote | down_vote
-------------+---------+-----------
23 | 10 | 0
17 | 10 | 0
17 | 10 | 0
Я использую postgresql Спасибо!