Я создал временную таблицу из записей, которая выглядит как ниже. Я хочу сгруппировать студента, используя идентификатор студента (stu_D). В то время как группировка студента, статус результата будет ПРОЙДЕН, если он прошел весь предмет, и НЕ ПРОЙДЕТ, если он потерпел неудачу хотя бы на один балл.
SELECT T.stu_D, T.stuName, IF(T.number_of_failures>0, 'FAILED', 'PASSED') final_result FROM (SELECT stu_D, stuName, COUNT(IF(result='FAILED', 1, NULL)) number_of_failures FROM your_table GROUP BY stu_D, stuName) T;
попробуйте этот запрос
SELECT stu_Name,result FROM `marks` WHERE stu_D not in (SELECT stu_D FROM marks WHERE result='FAILED') GROUP BY stu_D
Вы можете попробовать ниже запрос -
SELECT stu_D ,stuName ,CASE WHEN T2.CNT = 0 THEN 'passed' ELSE 'failed' END status FROM (SELECT stu_D ,stuName ,COUNT(CASE WHEN result = 'FAILED' THEN 1 END) CNT FROM T GROUP BY stu_D ,stuname) T2