В качестве логического описания сначала следует развернуть объединение, так как оно используется как внешним запросом, так и подзапросом.

Первая строка на изображении выше имеет idCustomer
из 1
и idProduct
из 1
.Подзапрос ищет все строки с одним и тем же идентификатором продукта и разными значениями.Для первой строки есть две строки, соответствующие этой комбинации (выделены желтым цветом в обоих столбцах).Это столбцы с Price
, выделенными красным цветом ниже.

Столбец SalePrice
из внешней строки имеет значение 1
.Это то же самое, что и все Price
значения, выделенные красным цветом (то есть ни одно из них не имеет другого значения), поэтому первая внешняя строка соответствует предикату = ALL
и вносит вклад в подсчет.
Тот же процессповторяется для остальных 9 строк, возвращаемых объединением.