sql >> Database teknologi >  >> RDS >> Mysql

Hvordan laver man union alle SQL-SQLite forespørgsler efter case-sætning?

Først skal du få den samlede score for hver spiller og derefter slutte dig til players .
Brug derefter vinduesfunktionen FIRST_VALUE() for at få den bedste spiller i hver gruppe:

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 demoen .




  1. Sådan konverteres XMLTYPE i VARCHAR i ORACLE?

  2. MySQL:Grupperet primær nøgle med InnoDB

  3. Php - Din PHP-installation ser ud til at mangle MySQL-udvidelsen, som kræves af WordPress

  4. Sådan fungerer ELT() i MariaDB