Важно понимать, в какой момент выполнения запроса вычисляются значения агрегатных функций. А вычисляются они по набору данных, полученному после выполнения соединений из FROM и применения ограничений из WHERE.

Проведем ряд экспериментов (мы любим проводить эксперименты, если сомневаешься в чем-то - поэкспериментируй). Получим информацию о заказах и товарах в них:

SELECT p.store_id,
       pi.product_id,
       pi.price
  FROM purchase p
  JOIN purchase_item pi
    ON pi.purchase_id = p.purchase_id
 ORDER BY p.store_id
store_id product_id price
100 3 26100.00
100 3 26100.00
201 4 21500.00
201 12 100000.00
301 7 4900.00
302 9 44500.00
302 8 38300.00
302 8 38300.00
... ... ...

Теперь найдем минимальную стоимость товара в заказах в пределах магазина:

SELECT p.store_id,
       min(pi.price) as price_min
  FROM purchase p
  JOIN purchase_item pi
    ON pi.purchase_id = p.purchase_id
 GROUP BY p.store_id
 ORDER BY p.store_id
store_id price_min
100 26100.00
201 21500.00
301 4900.00
302 38300.00
... ...

А теперь оставим только товары, проданные дороже 25000:

SELECT p.store_id,
       min(pi.price) as price_min
  FROM purchase p
  JOIN purchase_item pi
    ON pi.purchase_id = p.purchase_id
 WHERE pi.price > 25000
 GROUP BY p.store_id
 ORDER BY p.store_id
store_id price_min
100 26100.00
201 100000.00
302 38300.00

Для 201 магазина price_min сменилась с 21500.00 на 100000.00, а строка с 301-м магазином вообще пропала. Чтобы посмотреть, по какому набору данных вычислялась агрегатная функция min, достаточно в первый запрос добавить условие на стоимость:

SELECT p.store_id,
       pi.product_id,
       pi.price
  FROM purchase p
  JOIN purchase_item pi
    ON pi.purchase_id = p.purchase_id
 WHERE pi.price > 25000
 ORDER BY p.store_id
store_id product_id price
100 3 26100.00
100 3 26100.00
201 12 100000.00
302 8 38300.00
302 8 38300.00
302 9 44500.00
... ... ...

4.6 Дополнительные столбцы в списке выборки с GROUP BY

4.8 GROUP BY по нескольким выражениям