Je gebruikt de verkeerde aggregaat
. count(expression)
telt het aantal rijen waarvoor de uitdrukking is niet nul. Als je een som wilt, gebruik dan sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Merk op dat geldwaarden en binaire drijvende-komma-wiskunde een slechte combinatie is vanwege binaire floats kunnen niet alle decimale waarden weergeven
. Gebruik in plaats daarvan een juist monetair type
, of Numeric
in dat geval gebruikt SQLAlchemy Decimal
om de resultaten in Python weer te geven.