PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да получите играч с максимален резултат от всяка група с помощта на SQL?

Използвайте row_number() :

select group_id, player_idfrom ( 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 от играчи p вътрешно присъединяване съвпада с m на m.first_player =p.player_id или m.second_player =p.player_id) xкъдето rn =1 

Демо на DB Fiddle :

<предварителен код>| group_id | играч_ид || -------- | --------- || 1 | 65 || 2 | 20 |

Забележка:има само един играч в група 3 (player_id 40) и той не е участвал в нито една игра.



  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

  2. org.postgresql.util.PSQLException:Опитът за свързване е неуспешен

  3. Ръчно освободете Postgres LOCK

  4. PostgreSQL - Изберете ред със съставна максимална стойност от 2 колони

  5. Как да използвате Joda-Time с java.sql.Timestamp