Anda menggunakan agregat
yang salah . count(expression)
menghitung jumlah baris yang ekspresi tidak nol. Jika Anda ingin jumlah, gunakan sum(expression)
:
db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
scalar()
Perhatikan bahwa nilai moneter dan matematika floating point biner adalah campuran yang buruk karena float biner tidak dapat mewakili semua nilai desimal
. Alih-alih gunakan jenis moneter
yang tepat , atau Numeric
dalam hal ini SQLAlchemy menggunakan Decimal
untuk merepresentasikan hasil dengan Python.