Používáte špatný agregát
. count(expression)
počítá počet řádků, pro které je výraz není nulový. Pokud chcete součet, použijte sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Mějte na paměti, že peněžní hodnoty a binární matematika s pohyblivou řádovou čárkou je špatná kombinace kvůli binární floats, které nejsou schopny reprezentovat všechny desetinné hodnoty
. Místo toho použijte správný peněžní typ
nebo Numeric
v takovém případě SQLAlchemy používá Decimal
reprezentovat výsledky v Pythonu.