GROUP BY
в этом случае можно опустить , поскольку в списке SELECT
есть только одна (одна) агрегатная функция (и) и все строки гарантированно принадлежат одной и той же группе cust_id
(согласно предложению WHERE
).
Агрегация будет по всем строкам с совпадением cust_id
в обоих случаях. Так что оба запроса верны.
Это будет очиститель другой способ реализовать то же самое:
SELECT fd.cust_id
FROM fd
JOIN loan USING (cust_id)
GROUP BY fd.cust_id, fd.amount
HAVING fd.amount < sum(loan.amount)
Существует одно отличие : строки с одинаковыми (cust_id, amount)
в fd
появляются только один раз в результате моего запроса, тогда как в оригинале они появляются несколько раз.
В любом случае, если в таблице loan
нет подходящей строки с ненулевым amount
, вы получите без строк . Я полагаю, вы знаете об этом.