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

まだ科目を通過していない学生をフィルタリングする

    集計を使用することをお勧めします:

    SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
    FROM results
    GROUP  BY `Reg.No`, SubjectCode
    HAVING SUM(`Pass/Fail` = 'Pass') = 0;
    

    HAVING 句は、最後の列が'Pass'である各学生とコースの結果の数をカウントします 。 MySQLでは、ブール値は数値コンテキストでは整数として扱われ、trueは1です。したがって、sum( 合格/不合格= 'Pass') 学生がコースに合格した回数をカウントします。 = 0 学生はコースに合格しなかったと言います。

    提案として、/などの特殊文字を入れないでください および. 列名で。これには、列をエスケープする必要があり、バッククォートで埋められているため、コードの記述が難しくなります。



    1. 四半期に月を分割し、月をグループ化する方法

    2. SQLServer2005のアトミックUPSERT

    3. 重複する変数を使用して、日付が異なる複数の行を結合します(最初と最後の変更日をキャプチャするため)

    4. mysqlはフォーマットの問題に優れています