Sorguda değer hesaplama

Python ile Veritabanlarına Giriş

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Matematiksel işleçler

  • toplama +
  • çıkarma -
  • çarpma *
  • bölme /
  • modül %
  • Farklı veri türlerinde farklı çalışır
Python ile Veritabanlarına Giriş

Fark hesaplama

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)]
Python ile Veritabanlarına Giriş

Case ifadesi

  • Koşula göre veriyi farklı ele almak için kullanılır
  • Eşleşecek koşullar listesi ve koşul sağlanırsa döndürülecek bir sütun alır
  • Liste, önceki koşullarla eşleşmeyen kayıtlar için yapılacak işlemi belirleyen bir else ile biter
Python ile Veritabanlarına Giriş

Case örneği

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,)]
Python ile Veritabanlarına Giriş

Cast ifadesi

  • Veriyi başka bir türe dönüştürür
  • Şunlar için kullanışlıdır...
    • bölme için tamsayıları ondalığa çevirmek
    • metinleri tarih/saat türlerine çevirmek
  • Bir sütun veya ifade ve hedef Type alır
Python ile Veritabanlarına Giriş

Yüzde örneği

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'),)]
Python ile Veritabanlarına Giriş

Haydi pratik yapalım!

Python ile Veritabanlarına Giriş

Preparing Video For Download...