İki sütun arasındaki farkı hesaplama
Sıklıkla bir sorgunun parçası olarak matematiksel işlemler yapman gerekir; örneğin 2000'den 2008'e nüfustaki değişimi hesaplamak isteyebilirsin. Sayılar üzerindeki matematiksel işlemler için, SQLAlchemy'deki operatörler Python'da olduğu gibi çalışır.
Bu operatörlerle toplama (+), çıkarma (-), çarpma (*), bölme (/) ve modül (%) işlemlerini yapabilirsin. Not: Sayısal olmayan sütun türleriyle kullanıldıklarında farklı davranırlar.
Şimdi 2000 ile 2008 arasındaki nüfus artışına göre en üst 5 eyaleti bulalım.
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
stmtadlı bir select ifadesi tanımla ve şunları döndürsün:- i)
censustablosunun state sütunu (census.columns.state). - ii) 2008 (
census.columns.pop2008) ile 2000 (census.columns.pop2000) arasındaki nüfus farkı; etiketi'pop_change'olsun.
- i)
- İfadeyi
census.columns.stateile grupla. - İfadeyi nüfus değişimine (
'pop_change') göre azalan sırada sırala. Bunudesc('pop_change')geçirerek yap. - Önceki ifade üzerinde
.limit()yöntemini kullanarak yalnızca 5 kayıt döndür. - İfadeyi çalıştır ve kayıtları
fetchall()ile çek. - Print ifadesi senin için yazıldı. Sonuçları görmek için Yanıtı Gönder!
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# Build query to return state names by population difference from 2008 to 2000: stmt
stmt = select([____, (____-____).label(____)])
# Append group by for the state: stmt_grouped
stmt_grouped = stmt.group_by(____)
# Append order by for pop_change descendingly: stmt_ordered
stmt_ordered = stmt_grouped.order_by(____)
# Return only 5 results: stmt_top5
stmt_top5 = ____
# Use connection to execute stmt_top5 and fetch all results
results = connection.execute(____).fetchall()
# Print the state and population change for each record
for result in results:
print('{}:{}'.format(result.state, result.pop_change))