sql >> Database teknologi >  >> RDS >> PostgreSQL

Forespørg en specifik JSON-kolonne (postgres) med sqlalchemy

Du bruger det forkerte aggregat . count(expression) tæller antallet af rækker, som udtrykket for er ikke nul. Hvis du vil have en sum, skal du bruge sum(expression) :

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

Bemærk, at pengeværdier og binær matematik med flydende komma er en dårlig blanding på grund af binære flydere, der ikke er i stand til at repræsentere alle decimalværdier . Brug i stedet en ordentlig pengetype , eller Numeric i hvilket tilfælde SQLAlchemy bruger Decimal for at repræsentere resultaterne i Python.



  1. Gem Android Firebase Auth-brugere sikkert i en MySQL-database

  2. Datalagring:REST vs. POSIX for arkiver og HSM

  3. Hvordan kan jeg bruge flere WHERE-sætninger, når jeg bruger IN med array

  4. hvordan gemmer man pdf-rapporter automatisk i databasen?