PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để có được cầu thủ ghi điểm tối đa từ mỗi nhóm bằng cách sử dụng SQL?

Sử dụng row_number() :

select group_id, player_id
from (
    select
        p.*,
        row_number() over(
            partition by p.group_id 
            order by case 
                when m.first_player = p.player_id then m.first_score 
                else m.second_score 
            end desc,
            player_id
        ) rn
    from players p
    inner join matches m
        on m.first_player = p.player_id or m.second_player = p.player_id
) x
where rn = 1

Bản trình diễn trên DB Fiddle :

| group_id | player_id |
| -------- | --------- |
| 1        | 65        |
| 2        | 20        |

Lưu ý:chỉ có một người chơi trong nhóm 3 (player_id 40) và họ không tham gia bất kỳ trò chơi nào.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres thời gian với múi giờ bình đẳng

  2. Heroku Connect với Cakephp v3.0.12

  3. Sự cố với bộ chứa postgresql và pgadmin docker

  4. Nhận bản ghi trong đó khóa cột json là null

  5. Mười cách để mở rộng chức năng của PostgreSQL