PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mendapatkan pemain skor maksimal dari setiap grup menggunakan SQL?

Gunakan 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

Demo di DB Fiddle :

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

Catatan:hanya ada satu pemain di grup 3 (player_id 40), dan mereka tidak berpartisipasi dalam permainan apa pun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara Menangkap catatan kesalahan menggunakan JDBCTemplate batchUpdate di postgreSql?

  2. Bagaimana saya bisa Memasukkan objek JSON ke Postgres menggunakan Java ReadyStatement?

  3. Anotasi Jendela Django menggunakan kombinasi dengan klausa berbeda

  4. Periksa nilai dengan current_setting()

  5. Bagaimana saya bisa menyatukan koneksi menggunakan psycopg dan gevent?