Можно попытаться использовать агрегатную функцию условия в HAVING
и проверить, установлены ли оба условия.
CREATE TABLE T (
ID INT,
`USER` INT,
EXAM VARCHAR(50),
RESULT FLOAT
);
INSERT INTO T VALUES (1,10,'ssc', 4.2);
INSERT INTO T VALUES (2,10,'hsc', 4.5);
INSERT INTO T VALUES (3,11,'ssc', 4.0);
INSERT INTO T VALUES (4,11,'hsc', 4.4);
INSERT INTO T VALUES (5,12,'ssc', 5.0);
INSERT INTO T VALUES (6,12,'hsc', 5.0);
INSERT INTO T VALUES (7,13,'ssc', 3.0);
INSERT INTO T VALUES (8,13,'hsc', 3.0);
Запрос 1 :
SELECT USER
FROM T
GROUP BY USER
HAVING
SUM(exam = 'ssc' and result > 4.0) = 1
AND
SUM(exam = 'hsc' and result > 4.2) = 1
Результаты :
| USER |
|------|
| 10 |
| 12 |