Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak połączyć wszystkie zapytania SQL-SQLite według instrukcji case?

Najpierw musisz uzyskać łączny wynik każdego gracza, a następnie dołączyć do players .
Następnie użyj funkcji okna FIRST_VALUE(), aby uzyskać najlepszego gracza z każdej grupy:

SELECT DISTINCT p.group_id, 
       FIRST_VALUE(p.player_id) OVER (PARTITION BY p.group_id ORDER BY m.score DESC) winner_id
FROM players p
LEFT JOIN (
  SELECT player, SUM(score) score
  FROM (
    SELECT match_id, first_player player, first_score score FROM matches
    UNION ALL
    SELECT match_id, second_player, second_score FROM matches
  ) t
  GROUP BY player
) m ON m.player = p.player_id  

Zobacz demo .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja MySQL NOW() z wysoką precyzją

  2. Wzorzec nazwy tabeli nie może być NULL ani pusty w java

  3. ClassNotFoundException podczas łączenia się z Mysql za pomocą JDBC

  4. Jak przechowywać tablicę w zmiennej sesji w php

  5. MySQL:usuń kolejne zduplikowane wartości