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

jak wyprowadzić tabelę klasyfikacji w locie z tabeli mysql wyników piłkarskich [soccer]?

Najpierw połącz tabelę wyników, zamieniając drużynę gospodarzy z drużyną gości i zamieniając liczbę bramek. Daje to pewne dane źródłowe, które można łatwo agregować, a zapytanie generujące kartę wyników wygląda mniej więcej tak:

select 
    team, 
    count(*) played, 
    count(case when goalsfor > goalsagainst then 1 end) wins, 
    count(case when goalsagainst> goalsfor then 1 end) lost, 
    count(case when goalsfor = goalsagainst then 1 end) draws, 
    sum(goalsfor) goalsfor, 
    sum(goalsagainst) goalsagainst, 
    sum(goalsfor) - sum(goalsagainst) goal_diff,
    sum(
          case when goalsfor > goalsagainst then 3 else 0 end 
        + case when goalsfor = goalsagainst then 1 else 0 end
    ) score 
from (
    select hometeam team, goalsfor, goalsagainst from scores 
  union all
    select awayteam, goalsagainst, goalsfor from scores
) a 
group by team
order by score desc, goal_diff desc;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql pobiera listę unikalnych słów z tabeli, w której wartości w polu są oddzielone przecinkiem

  2. Korzystanie z pól wirtualnych w cakePHP 2.x

  3. Przykłady transakcji PHP + MySQL

  4. Czym dokładnie różni się użycie OR w instrukcji MySQL z nawiasami lub bez nawiasów?

  5. Funkcja SUM() w MySQL