0Pricing
Django Academy · Pelajaran

Agregasi Kondisional dengan Case/When

Buat percabangan logika dalam satu kueri

Agregasi Kondisional dengan Case/When adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Branching Inside a Query

Sometimes you need different results for different rows. Case lets the database choose a value per row, like an if statement in SQL.

The Case and When Pair

A Case holds one or more When branches; each When pairs a condition with the value to use when that condition is true.

from django.db.models import Case, When, Value

A Simple Label

Annotate a computed label by giving each When a condition and a then value, with a default for the rest.

Book.objects.annotate(tier=Case(
  When(price__gte=50, then=Value("premium")),
  default=Value("standard")))

Why Conditional Aggregation

The real power comes from putting Case inside an aggregate, so you can count or sum only the rows that match a condition.

Count Rows That Match

Wrap a Case in Count to tally just the matching rows, since non-matching branches return null and are skipped.

Count(Case(When(active=True, then=1)))

The filter= Shortcut

Modern Django offers a cleaner way: pass filter to an aggregate to count or sum a subset without writing Case yourself.

Count("id", filter=Q(active=True))

Multiple Buckets at Once

Annotate several conditional aggregates together to build a breakdown, like active and inactive counts in one query.

Team.objects.annotate(
  active=Count("member", filter=Q(member__active=True)),
  inactive=Count("member", filter=Q(member__active=False)))

Sum a Subset

The same trick works with Sum, letting you total only the rows that pass a condition, such as paid invoices.

Sum("amount", filter=Q(status="paid"))

Set an output_field

When the value types are not obvious, give Case an output_field so Django knows how to handle the result.

Case(When(...), default=Value(0), output_field=IntegerField())

Order by a Case

You can even order_by a Case annotation to create custom sort priorities that plain field ordering cannot express.

One Trip to the Database

All of this branching runs server-side in a single query, far faster than looping in Python and counting by hand.

Quick Check

You want one number: how many members of a team are active, computed in the database.

Recap

Case and When add per-row branching, and pairing conditions with aggregates, or the filter= shortcut, builds rich breakdowns in one query. 📊

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Agregasi Kondisional dengan Case/When” gratis?

Ya — teks lengkap “Agregasi Kondisional dengan Case/When” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Agregasi Kondisional dengan Case/When”?

Buat percabangan logika dalam satu kueri Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Django Academy?

Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Agregasi Kondisional dengan Case/When” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?

Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. aggregate vs annotate
  2. Ekspresi F untuk Pembaruan Atomik
  3. Objek Q untuk Filter Kompleks
  4. Agregasi Kondisional dengan Case/When
← Kembali ke Django Academy