sql >> Databáze >  >> RDS >> PostgreSQL

Dotaz na konkrétní sloupec JSON (postgres) pomocí sqlalchemy

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.



  1. Problém s parametrem Oracle Stored Procedure – Mám řešení – Chyba typu překlep

  2. Vyberte, kde je první písmeno v rozsahu (PostgreSQL)

  3. Jaké je očekávané chování pro více funkcí vracejících sadu v klauzuli SELECT?

  4. Jak zruším nebo vytvořím databázi z clojure.java.jdbc?