Du bruger det forkerte aggregat
. count(expression)
tæller antallet af rækker, som udtrykket for er ikke nul. Hvis du vil have en sum, skal du bruge sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Bemærk, at pengeværdier og binær matematik med flydende komma er en dårlig blanding på grund af binære flydere, der ikke er i stand til at repræsentere alle decimalværdier
. Brug i stedet en ordentlig pengetype
, eller Numeric
i hvilket tilfælde SQLAlchemy bruger Decimal
for at repræsentere resultaterne i Python.