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

マークが最も高い最初の3つのグループには、特定のポイント5、3、1が必要です。

    これ 答えはItayによって与えられます

    SELECT t1.`id`,  t1.`name`,  t1.`group1`,
           t1.`section`, t1.`MARKS`, `t_group_points`.`points`
    
    FROM   `students` t1
    
    LEFT JOIN (
        (
            SELECT `t4`.`group1`, `t_points`.`points`
            FROM   (SELECT   `t3`.`group1`, AVG(`t3`.`marks`) AS `avg`
                    FROM     `students` `t3`
                    WHERE    (`t3`.`section` = 'class1') AND
                             (`t3`.`group1` IS NOT NULL)
                    GROUP BY `t3`.`group1`) `t4`
    
            INNER JOIN (
                  (SELECT `top`.`avg`,
                          CASE @curRow := @curRow + 1  
                               WHEN '1' THEN 5
                               WHEN '2' THEN 3
                               WHEN '3' THEN 1
                               ELSE NULL END 'points'
    
                  FROM (SELECT `t_avg`.`avg`
                        FROM   (SELECT   `t2`.`group1`, AVG(`t2`.`marks`) AS `avg`
                                FROM     `students` `t2`
                                WHERE    (`t2`.`section` = 'class1') AND
                                         (`t2`.`group1` IS NOT NULL)
                                GROUP BY `group1`) `t_avg`
                        GROUP BY `t_avg`.`avg`
                        ORDER BY `avg` DESC
                        LIMIT 0, 3) `top`, (SELECT @curRow:=0) r
                  ) AS `t_points`)
             ON (`t_points`.`avg` = `t4`.`avg`)      
        ) AS `t_group_points`)
    ON (`t_group_points`.`group1` = `t1`.`group1`)
    



    1. Oracleでシーケンスをリセットするにはどうすればよいですか?

    2. debezium CDCメカニズムを介してkafkaブローカーから受信したBigDecimal値を逆シリアル化するにはどうすればよいですか?

    3. 別のSQLServer上の別のデータベースにテーブルをコピーします

    4. WHERE句を使用した複数のテーブルを使用したMySQLUPDATE構文