Подчиненный запрос выдает совокупность средних баллов студентов второй группы. Перед подчиненным запросом стоит предикат ALL, который влияет на результат сравнения. В нашем случае выражение, включающее операцию сравнения, имеет вид:
[Средний балл]>=ALL(Подчиненный запрос)
В общем случае слева от знака сравнения стоит выражение, а знак сравнения может быть любым из списка (=,<>,<,>,<=,>=). Подчиненный запрос выдает множество значений. Значение выражения слева сравнивается с каждым из значений, возвращаемых подчиненным запросом. Результат сравнения принимает значение TRUE, если все сравнения со значениями подчиненного запроса истинны. В нашем случае в результирующее множество попадают студенты, средние баллы которых не меньше среднего балла любого студента второй группы.
Наряду с ALL находит применение предикат ANY (синоним SOME). В этом случае предикат принимает значение TRUE, когда результат сравнения хотя бы с одним из возвращаемых подчиненным запросом значений принимает значение TRUE.
Если выражение или некоторое значение из возвращаемых подчиненным запросом равно NULL, результат не определен при любом из упомянутых предикатов. Если в результате выполнения подчиненного запроса не возвращается никаких значений, то предикат принимает значение FALSE.
В рассматриваемом примере выдается пустая таблица, так как в
первой группе (табл. 1) нет студентов, средний балл которых был бы не ниже среднего балла любого из студентов второй группы, например Белкина. Если заменить предикат ALL на ANY (или SOME), то все 4 студента первой группы попадут в результирующую таблицу, так как