Kadınların toplam yüzdesini belirleme
Ayrıca tek bir select deyiminde işlevleri ve operatörleri birleştirmek de mümkündür.
Bu birleşimler, yüzde ya da ortalama hesaplamak istediğimizde son derece kullanışlı olabilir ve ayrıca, tüm sorguyu etkilemeden belirli ölçütleri karşılayan veriler üzerinde işlem yapmak için case() ifadesini de kullanabiliriz.
case() ifadesi, eşleştirilecek koşulların bir listesini ve koşul sağlanırsa döndürülecek sütunu kabul eder; ardından hiçbir koşul eşleşmezse kullanılacak bir else_ gelir. Bu ifadenin tamamını istediğimiz herhangi bir fonksiyonun ya da matematiksel işlemin içine alabiliriz.
Sıklıkla tamsayı bölmesi yaparken sonuç olarak bir float elde etmek isteriz. Bazı veritabanları bunu otomatik olarak yapsa da, bir ifadeyi belirli bir türe dönüştürmek için cast() fonksiyonunu kullanabilirsin.
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
sqlalchemyiçindencase,castveFloat'u içe aktar.- 2000 yılındaki kadın nüfusunu hesaplamak için
female_pop2000ifadesini oluştur. Bunu yapmak için:func.sum()içindecase()kullan.case()'in ilk argümanı bir demet içeren bir liste olmalı:- i)
census.columns.sex'in'F''e eşit olduğunu kontrol eden bir boolean. - ii)
census.columns.pop2000sütunu.
- i)
- İkinci argüman
else_koşuludur ve 0 olarak ayarlanmalıdır.
- 2000 yılındaki toplam nüfusu hesapla ve
cast()kullanarakFloat'a dönüştür. - 2000 yılındaki kadınların yüzdesini hesaplamak için bir sorgu oluştur. Bunu yapmak için
female_pop2000değerinitotal_pop2000'a böl ve100ile çarp. - Sorguyu çalıştır ve
percent_female'i yazdır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# import case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____
# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
____([
(____ == ____, ____)
], else_=____))
# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)
# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])
# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()
# Print the percentage
print(____)