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 usersArtı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.
Görev
KolayMevcut 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_idtotal: 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 usersKendin 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
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
2String Fonksiyonları
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE ve TRIM|| ile BirleştirmeÖzet - Faturalar