bugfix> mysql > 投稿

SQLを実行した後

SELECT 
        m.stdClassID,
        m.Percentage,
        sc.ClassID,
        sc.Form,
        sc.FormName,
        sc.Year,
        sc.stdName
FROM stdremark  m
INNER JOIN (
    SELECT
        sc.ClassID,
        c.Form,
        c.FormName,
        sc.stdClassID,
        c.Year,
        CONCAT(s.StdFname,' ',s.StdLname) as stdName
    FROM tblstdclass sc 
    INNER JOIN tblclass c
        ON sc.ClassID=c.ClassID
    INNER JOIN tblstudents s
        ON sc.StdID = s.StdID
    WHERE c.Year=2018
) sc ON m.stdClassID=sc.stdClassID
WHERE m.Term=3`

この結果を思いつきます フォーム列でグループ化された各学生の最大パーセンテージを取得したい

Max()とgroup by()を取得しようとすると SQLから:

SELECT 
        m.stdClassID,
        MAX(m.Percentage),
        sc.ClassID,
        sc.Form,
        sc.FormName,
        sc.Year,
        sc.stdName
FROM stdremark  m
INNER JOIN (
    SELECT
        sc.ClassID,
        c.Form,
        c.FormName,
        sc.stdClassID,
        c.Year,
        CONCAT(s.StdFname,' ',s.StdLname) as stdName
    FROM tblstdclass sc 
    INNER JOIN tblclass c
        ON sc.ClassID=c.ClassID
    INNER JOIN tblstudents s
        ON sc.StdID = s.StdID
    WHERE c.Year=2018
) sc ON m.stdClassID=sc.stdClassID
WHERE m.Term=3
GROUP BY sc.Form`

期待される結果は

17     71     28     upper     Science     2018     Jerry Maguire

回答 1 件
  • 部分的なグループ化を許可するMySQLの問題である可能性があります。 GROUP BY を拡張してみてください   m.Percentage を除くすべての列でグループ化する式 。

    ...
    GROUP BY m.stdClassID,
             sc.ClassID,
             sc.Form,
             sc.FormName,
             sc.Year,
             sc.stdName
    
    

    他のDBMSでは、とにかくそうする必要があります。

あなたの答え