sql >> Database >  >> RDS >> PostgreSQL

Een specifieke JSON-kolom (postgres) opvragen met sqlalchemy

Je gebruikt de verkeerde aggregaat . count(expression) telt het aantal rijen waarvoor de uitdrukking is niet nul. Als je een som wilt, gebruik dan sum(expression) :

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

Merk op dat geldwaarden en binaire drijvende-komma-wiskunde een slechte combinatie is vanwege binaire floats kunnen niet alle decimale waarden weergeven . Gebruik in plaats daarvan een juist monetair type , of Numeric in dat geval gebruikt SQLAlchemy Decimal om de resultaten in Python weer te geven.



  1. Fabric en Sudo als een andere gebruiker

  2. Hoe de RTRIM()-functie werkt in MySQL

  3. Mysql-rij verwijderen na opgegeven tijd

  4. SET en Select Query combineren Uitvoeren in een enkele MySql-query om het resultaat in pentaho door te geven