2016-03-23 22 views
-5

Geçerli yıl ve önceki yıl için belirli bir dereceye göre derecelendirilmiş Oracle müşterileri göstermem gerekiyor. Örneğin. sütunlar Grade, Müşteriler Geçerli yıl için özel notu ile derecelendirilir, Müşteriler Bir önceki yıl için özel notu ile puan. Not, grup olarak olmalı ve müşteriler toplam göstermelidir. Eğer hiç müşteri yoksa o zamanenter image description hereGeçerli yılın sütunlarını ve önceki yılın sütunlarını göster

Yukarıdaki ekran görüntüsü beklenen çıktıdır. Şimdiye kadar sadece 01/01/2016 olan Cari Yılın Müşterilerim var. Önceki Yıl Müşterilerini de getirmek için bir sorgu oluşturamıyorum. Müşterilerin sorgusu için

Benim şu anki yıl:

SELECT Rating , count(customers) as Curr_year_Custs from Rated_Customers where Rated_year > = '2016' group by Rating;

+1

Bu siteye yeni değildir, bu nedenle gerçekten bu yeterli bilgi olmadığını söylememe gerek yok! Lütfen sorunuzu tablo yapısı, veriler ve beklenen çıktı ile düzenleyin. – sagi

+0

@sagi Bu soru hakkında daha fazla bilgi eklemeliyim? – charilaos13

+0

Evet, bu, hangi girdiden beklenen çıktı? ... – sagi

cevap

0
SELECT grade, 
     COUNT(DISTINCT CASE WHEN DATE '2015-01-01' >= date_column 
          AND date_column < DATE '2016-01-01' 
          THEN customer_id END 
      ) AS number_of_unique_customers_in_2015, 
     COUNT(DISTINCT CASE WHEN DATE '2016-01-01' >= date_column 
          AND date_column < DATE '2017-01-01' 
          THEN customer_id END 
      ) AS number_of_unique_customers_in_2016 
FROM Customers 
WHERE Date_Column >= DATE '2015-01-01' 
AND Date_Column < DATE '2017-01-01' 
GROUP BY grade; 
+0

Merhaba @MTO, verdiği geri bildirim için çok teşekkürler. Anlama, neden ana sorgunun sonunda 'nereye' koyarsın? – charilaos13

+0

Uygun bir dizine sahipseniz, sonuç kümesini yalnızca ilgilendiğiniz aralıklar arasındaki satırları göz önünde bulunduracak şekilde filtreleyebilirsiniz. "WHERE" yan tümcesine sahip değilseniz, sorgunuz satırların birkaç yıl geriye gitmesini bekleyebilir. Gereksinimlerinizin kapsamı dışında olan ve sadece veritabanı için gereksiz çalışmalara neden olacaktır. – MT0

İlgili konular