Две функции SUM одного поля в запросе
Нужно вывести имя владельца, сумму (условие: без даты оплаты), сумму (условие: с датой оплаты) Пытался сделать так:
SELECT o.name, SUM(f.amount), (SELECT SUM(f.amount) FROM fines f WHERE f.datepay IS NOT NULL )
FROM fines f INNER JOIN autos a ON f.auto = a.plateno INNER JOIN owners o ON a.owner = o.id
GROUP BY o.name;
Как сделать так чтоб для каждого владельца выводился столбец суммы без даты оплаты и столбец суммы с датой оплаты (дату не нужно выводить)?
Ответы (2 шт):
Автор решения: jlorpa
→ Ссылка
Вы сейчас во вложенном запросе вычисляете сумму с датой оплаты для всех владельцев. Самое простое решение добавить во вложенный запрос в условие WHERE ещё один предикат, которым вы будете фильтровать по владельцу.
Автор решения: Mike
→ Ссылка
SELECT o.name, SUM(f.amount), SUM(case when f.datepay IS NOT NULL then f.amount end)
FROM fines f INNER JOIN autos a ON f.auto = a.plateno INNER JOIN owners o ON a.owner = o.id
GROUP BY o.name;
Ну и видимо еще sum внутри которого противоположное условие у case потому как вы сказали еще что то про "сумму без даты оплаты"
