PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fragen Sie eine bestimmte JSON-Spalte (postgres) mit sqlalchemy ab

Sie verwenden das falsche Aggregat . count(expression) zählt die Anzahl der Zeilen, für die der Ausdruck ist nicht null. Wenn Sie eine Summe wünschen, verwenden Sie sum(expression) :

db.session.query(func.sum(Item.data['cost'].astext.cast(Numeric))).\
    filter(Item.data['surcharge'].astext.cast(Numeric) > 1).\
    scalar()

Beachten Sie, dass Geldwerte und binäre Fließkomma-Mathematik aufgrund von eine schlechte Mischung sind binäre Gleitkommazahlen, die nicht alle Dezimalwerte darstellen können . Verwenden Sie stattdessen einen geeigneten Währungstyp , oder Numeric in diesem Fall verwendet SQLAlchemy Decimal um die Ergebnisse in Python darzustellen.