Menu
Coddy logo textTech

CASE ile COUNT

Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası — ders 12 / 27.

Bir toplama (aggregate) fonksiyonu içine CASE ifadesi yerleştirebilirsiniz. Buradaki püf noktası, COUNT fonksiyonunun NULL değerlerini yoksaymasıdır; bu nedenle ELSE içermeyen bir CASE yalnızca koşulla eşleşen satırları sayar.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Artık active_count, tüm sorguyu filtrelememiş olsak bile 'active' satırların sayısıdır. Bu, yazacağınız her çoklu metrik dashboard sorgusunun arkasındaki püf noktasıdır.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>orders</strong>: <strong>id</strong>, <strong>customer_id</strong>, <strong>status</strong>

Her bir customer_id için şunları döndürün:

  • customer_id
  • total: müşterinin verdiği toplam sipariş sayısı
  • shipped: status = 'shipped' olanların sayısı
  • cancelled: status = 'cancelled' olanların sayısı

Yalnızca en az bir iptal edilmiş siparişi olan müşterileri döndürün. customer_id sütununa göre sıralayın.

Kopya kağıdı

Tüm sorguyu filtrelemeden bir koşulla eşleşen satırları saymak için COUNT içinde CASE kullanın (COUNT, NULL değerlerini yoksayar, bu nedenle ELSE ifadesini atlayın):

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Kendin dene

SELECT customer_id,
       COUNT(*) AS total,
       -- COUNT(CASE ...) kullanarak shipped, cancelled
FROM orders
GROUP BY customer_id
-- en az bir iptali olan müşterileri filtrele
ORDER BY customer_id
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temellerin Ötesi bölümündeki tüm dersler