Използвате грешен агрегат
. count(expression)
преброява броя на редовете, за които изразът не е нула. Ако искате сума, използвайте sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Имайте предвид, че паричните стойности и двоичната математика с плаваща запетая са лоша смес поради двоичните плаващи числа не могат да представят всички десетични стойности
. Вместо това използвайте подходящ паричен тип
или Numeric
в който случай SQLAlchemy използва Decimal
за представяне на резултатите в Python.