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

Как да обединя всички SQL-SQLite заявки по казус?

Първо трябва да получите общия резултат на всеки играч и след това да се присъедините към players .
След това използвайте функцията на прозореца FIRST_VALUE(), за да получите най-добрия играч от всяка група:

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  

Вижте демото .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Миграцията на база данни на Ruby on Rails не създава външни ключове в MySQL таблици

  2. Грешка при неправилна стойност на низа в MySQL при запазване на Unicode низ в Django

  3. NULL обработка в MySQL След актуализация Тригер, който се задейства само при промяна на данни

  4. Изберете N предишни и M следващи елементи около идентификатора на текущия елемент

  5. MySQL - length() срещу char_length()