У меня есть структура данных в Postgres, такая как:
Пожертвования
id amount status
1 5000 OK
2 7500 OK
Пожертвования
id donationId amount includeInTotals
1 1 2500 false
2 1 2500 false
3 2 7500 false
В псевдо-SQL я пытаюсь сделать что-то вроде:
SELECT * FROM donations
WHERE SUM(SELECT donation.items WHERE "donationId" = "donations"."id"
AND "includeInTotals" = false) >= "donations"."amount"
По сути, хочу удалить пожертвования, где общее количество элементов пожертвования "includeInTotals = false" одинаковов качестве значения пожертвования.
Это код, который я получил для Sequelize:
Models.donations.findAndCountAll({
where: { status: 'OK' },
include: {
model: Models.donation_items,
as: 'items',
duplicating: false,
},
having: sequelize.literal('COALESCE(SUM(CASE WHEN "items"."includeInTotals" = false THEN items.amount ELSE 0 END), 0) < "donations"."amount"'),
group: ['"donations.id"', '"items.id"']
});
Это работает для ID пожертвования: 2 - это не таквозвращается по запросу, но ID пожертвования: 1 есть, несмотря на две суммы, равные 5000.
Что-то не так, я делаю с SUM?