Calcularea valorilor într-o interogare

Introducere în baze de date în Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Operatori matematici

  • adunare +
  • scădere -
  • înmulțire *
  • împărțire /
  • modulo %
  • Funcționează diferit pe tipuri de date diferite
Introducere în baze de date în Python

Calcularea diferenței

stmt = select([census.columns.age,           
        (census.columns.pop2008 -
        census.columns.pop2000).label('pop_change')
    ])

stmt = stmt.group_by(census.columns.age) stmt = stmt.order_by(desc('pop_change'))
stmt = stmt.limit(5)
results = connection.execute(stmt).fetchall() print(results)
[(61, 52672), (85, 51901), (54, 50808), (58, 45575),
(60, 44915)]
Introducere în baze de date în Python

Instrucțiunea CASE

  • Utilizat pentru a trata datele diferit în funcție de o condiție
  • Acceptă o listă de condiții de verificat și o coloană de returnat dacă condiția este îndeplinită
  • Lista de condiții se încheie cu o clauză else pentru cazurile în care nicio condiție anterioară nu este îndeplinită
Introducere în baze de date în Python

Exemplu CASE

from sqlalchemy import case

stmt = select([ func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0))])
results = connection.execute(stmt).fetchall() print(results)
[(19465159,)]
Introducere în baze de date în Python

Instrucțiunea CAST

  • Convertește datele într-un alt tip
  • Util pentru conversia...
    • numerelor întregi în numere zecimale pentru împărțire
    • șirurilor de caractere în date și ore
  • Acceptă o coloană sau expresie și tipul țintă
Introducere în baze de date în Python

Exemplu de procent

from sqlalchemy import case, cast, Float

stmt = select([ (func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0)) / cast(func.sum(census.columns.pop2008), Float) * 100).label('ny_percent')])
results = connection.execute(stmt).fetchall() print(results)
[(Decimal('6.4267619765'),)]
Introducere în baze de date în Python

Să exersăm!

Introducere în baze de date în Python

Preparing Video For Download...