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

Skomplikowane dynamiczne porządkowanie ligi piłkarskiej w MySQL?

Zróbmy to krok po kroku:

Wybierz wygrane mecze u siebie i wynik u siebie:

   SELECT COUNT(*) as wins, SUM(G.home_score) as score FROM games G WHERE 
      G.team_id = T.team_id #See 3. query and you'll understand
      G.home_score > away_score

Nazwijmy ten wynik HOME_GAMES.

Wybierz wygrane mecze i wynik meczów wyjazdowych:

SELECT COUNT(*) as wins, SUM(G.away_score) as score FROM games G
WHERE 
  G.team_id = T.team_id #See 3. query and you'll understand
  G.away_score > G.home_score

Nazwijmy ten wynik AWAY_GAMES.

Wybierz łączną liczbę wygranych gier i łączny wynik:

   SELECT (A.wins + H.wins) AS total_wins, (A.score + H.score) AS total_score FROM
   (AWAY_GAMES) AS A, (HOME_GAMES) AS H, teams T 
   ORDER BY total_wins, total_score

==> Połącz wszystko, zastępując AWAY_GAMES i HOME_GAMES:

SELECT (A.wins + H.wins) AS total_wins, (A.score + H.score) AS total_score FROM 
  (SELECT COUNT(*) as wins, SUM(G.away_score) as score FROM games G
   WHERE 
     G.team_id = T.team_id #See 3. and you'll understand
     G.away_score > G.home_score) AS A, 

   (SELECT COUNT(*) as wins, SUM(G.home_score) as score FROM games G 
   WHERE 
      G.team_id = T.team_id #See 3. and you'll understand
      G.home_score > away_score) AS H, 

   teams T
   ORDER BY total_wins, total_score 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MINUS w MySQL?

  2. Jak przechowywać tekst arabski w bazie mysql za pomocą Pythona?

  3. Funkcja Lead i Lag w Mysql

  4. mysqldump robi częściową kopię zapasową - niekompletny zrzut tabeli

  5. LOAD DATA LOCAL INFILE wyświetla błąd Użyte polecenie nie jest dozwolone w tej wersji MySQL