2012-02-09 21 views
5

Birden çok kez gerçekleşen farklı bir device_type satır sayısını döndüren bir sorgum var.Yalnızca bir kez oluşan satırları nasıl özetleyebilirim?

SELECT COUNT(*) AS C1,device_type FROM stat 
    WHERE stat_date = '2012-02-08' 
    GROUP BY 2 HAVING C1 > 1 
    ORDER BY 1 DESC 

aşağıdaki ikinci sütun olarak 'başkalarının I COUNT toplamını ekleme nasıl

(*) ve 'diğerleri' olarak geri kalan (SAHİP sayısı = 1) satır özetlemek istiyorum sorgu? Bunu yapacağını DB

device_type 
dt1 
dt1 
dt1 
dt2 
dt2 
dt3 
dt4 
dt5 

yılında

SELECT COUNT(*) AS C2,device_type FROM stat 
    WHERE stat_date = '2012-02-08' 
    GROUP BY 2 HAVING C2 = 1 
    ORDER BY 1 DESC 

Örnek veri bir sonuç

3 dt1 
2 dt2 
3 other 
+0

stat u 'SEÇ device_type 'devType', COUNT (*) 'diğerleri' için değil bu iş nereye (koşul) GroupBy device_type başkalarını sahip> yapar Bunun dışında 1 ' – Deeptechtons

cevap

3

Ayrıca deneyebilirsiniz:

SELECT SUM(C1) AS C1, CASE WHEN C1 = 1 THEN 'other' ELSE device_type END as device_type 
FROM ( SELECT COUNT(*) AS C1, 
       device_type 
     FROM stat 
     WHERE stat_date = '2012-02-08' 
     GROUP BY device_type) A 
GROUP BY CASE WHEN C1 = 1 THEN 'other' ELSE device_type END 
+0

Ben de bunun gibi aynı çizgideydim; Sadece dış seçim ve grup tarafından "eğer (C1 = 1, 'diğerleri', device_type)" ile söz dizimi sözdizimi değiştirildi. –

4

bekliyordu.

SELECT COUNT(*) AS C1,device_type FROM stat 
    WHERE stat_date = '2012-02-08' 
    GROUP BY 2 HAVING C1 > 1 
    ORDER BY 1 DESC 
Union 

SELECT Sum(1),'OTHERS'FROM stat 
    WHERE stat_date = '2012-02-08' 
    GROUP BY 2 HAVING C1 =1 
    ORDER BY 1 DESC 
+1

Bu işe yaramıyor. Sayımı ikinci seçimde yapmadan önce toplamı uygulayamazsınız. –

İlgili konular