Du använder fel aggregat
. count(expression)
räknar antalet rader för vilka uttrycket är inte null. Om du vill ha en summa, använd sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Observera att monetära värden och binär flyttal-matematik är en dålig blandning på grund av binära flyter som inte kan representera alla decimalvärden
. Använd istället en korrekt penningtyp
, eller Numeric
i så fall använder SQLAlchemy Decimal
för att representera resultaten i Python.