sql >> データベース >  >> RDS >> Mysql

サッカー[サッカー]の結果のmysqlテーブルからその場で順位表を出力する方法は?

    まず、スコアテーブルを結合して、ホームチームとアウェイチームを交換し、ゴールカウントを交換します。これにより、簡単に集計できるソースデータが得られ、スコアカードを生成するためのクエリは次のようになります。

    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. mysqlを使用したEntityFramework、LinuxとWindows間のテーブルキャピタライゼーションの問題

    2. 新しいテーブルを作成するときに外部キーを追加するにはどうすればよいですか?

    3. NoSQLにおけるDBAの役割

    4. 数百万の行テーブル、MySQLでのLIKEクエリのパフォーマンス