Menghitung selisih antara dua kolom
Sering kali, Anda perlu melakukan operasi matematika sebagai bagian dari kueri, misalnya saat ingin menghitung perubahan populasi dari 2000 ke 2008. Untuk operasi matematika pada angka, operator di SQLAlchemy bekerja sama seperti di Python.
Anda dapat menggunakan operator ini untuk melakukan penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%). Catatan: Perilakunya berbeda saat digunakan pada tipe kolom nonnumerik.
Sekarang, mari cari 5 negara bagian teratas berdasarkan pertumbuhan populasi antara 2000 dan 2008.
Latihan ini adalah bagian dari kursus
Pengantar Basis Data di Python
Petunjuk latihan
- Definisikan pernyataan select bernama
stmtuntuk mengembalikan:- i) Kolom negara bagian dari tabel
census(census.columns.state). - ii) Selisih jumlah populasi antara 2008 (
census.columns.pop2008) dan 2000 (census.columns.pop2000) dengan label'pop_change'.
- i) Kolom negara bagian dari tabel
- Kelompokkan pernyataan berdasarkan
census.columns.state. - Urutkan pernyataan berdasarkan perubahan populasi (
'pop_change') secara menurun. Lakukan dengan memberikandesc('pop_change'). - Gunakan metode
.limit()pada pernyataan sebelumnya untuk hanya mengembalikan 5 rekaman. - Eksekusi pernyataan dan
fetchall()rekamannya. - Pernyataan print sudah disiapkan untuk Anda. Kirim jawaban untuk melihat hasilnya!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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))