sql >> Databasteknik >  >> RDS >> Mysql

hur matar man ut en ställningstabell i farten från en mysql-tabell över fotbollsresultat?

Först förenas poängtabellen tillsammans och byter hemmalaget med bortalaget och byter om antalet mål. Detta ger dig lite källdata som enkelt kan aggregeras och frågan för att generera scorekortet är ungefär så här:

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. Räkna antalet MySQL-frågor som körs på sidan

  2. Hur delar jag upp utdata från mysqldump i mindre filer?

  3. Använd NEWID() för att skapa ett unikt värde i SQL Server

  4. I SQL Server, hur kan jag låsa en enskild rad på ett sätt som liknar Oracles SELECT FOR UPDATE WAIT?