sql >> Databasteknik >  >> RDS >> Mysql

Hur gör man union all SQL-SQLite fråga efter fall uttalande?

Först måste du få den totala poängen för varje spelare och sedan gå med till players .
Använd sedan fönsterfunktionen FIRST_VALUE() för att få toppspelaren i varje grupp:

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  

Se demon .




  1. Hur fixar du ett fel i MySQL Felaktig nyckelfil när du inte kan reparera tabellen?

  2. Hur trunkerar man en tabell med Lära 2?

  3. Hur kan jag ställa in standardvärdet för ett fält som '0000-00-00 00:00:00'?

  4. Optimera frågor för nästa och föregående element