Estás usando el agregado
incorrecto . count(expression)
cuenta el número de filas para las que la expresión No es nulo. Si desea una suma, use sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Tenga en cuenta que los valores monetarios y las matemáticas binarias de coma flotante son una mala combinación debido a flotantes binarios que no pueden representar todos los valores decimales
. En su lugar, utilice un tipo monetario
adecuado. , o Numeric
en cuyo caso SQLAlchemy usa Decimal
para representar los resultados en Python.