karmaşık bir sorguda yardıma ihtiyacınız var.Oracle XE, bir sütuna göre farklı satır kombinasyonlarını saymak ve görüntülemek
USERID SERVICE
1 A
1 B
2 A
3 A
3 B
4 A
4 C
5 A
6 A
7 A
7 B
Tamam, dönmek ve SERVİS sütuna dayalı kendi sayımları ile benim tabloda mevcut tüm olası kombinasyonları görüntülemek için sorguyu istiyorum: Bu benim tablosundan bir özdür. Örneğin, ilk kullanıcı A ve B servisine sahiptir, bu bir kez gerçekleşen bir kombinasyondur. Bir sonraki kullanıcı sadece A servisine sahip, bu bir kez daha meydana gelen bir kombinasyon. Üçüncü kullanıcı servis A ve B, bu kez gerçekleştiği ve bu özel girişe göre benim çıkış böyle bir tablo olurdu Yani bu kombinasyon için sayım, şimdi vb 2'dir:
A AB AC ABC B BC
3 3 1 0 0 0
Yani netleştirmek için biraz daha fazla, eğer 3 hizmet varsa, o zaman 3 var! olası kombinasyonlar; 3x2x1 = 6 ve bunlar A, B, C, AB, AC, BC ve ABC'dir. Ve tablomda, kendilerine atanan bu hizmet kombinasyonuna sahip kullanıcı sayısı bulunmalıdır.
bu sorguyu kullanarak bir matris oluşturmak ve sonra da CUBE fonksiyonunu kullanarak tüm sayımları elde denedi:
select service_A, service_B, service_C from
(select USERID,
max(case when SERVICE =A then 1 else null end) service_A,
max(case when SERVICE =B then 1 else null end) service_B,
max(case when SERVICE =C then 1 else null end) service_C
from SOME_TABLE)
group by CUBE(service_A, service_B,service_C);
Ama tüm kombinasyonların sayısını alamadım. Sadece olan kombinasyonlara ihtiyacım var, bu yüzden 0 saymak gerekli değil, ancak bunları görüntülemek tamam. Teşekkürler.
size olası kombinasyonların bir dizi var dinamik sütunlar için
PL/SQL? Yani, sorgunuz kaç tane sütun döndürecek? Değilse, bunu basit bir sorguyla yapamazsınız, ancak dinamik bir şeye ihtiyacınız vardır (ve sonra bilinmeyen sayıda sütun ile sonuç kümesini işlemek zor olabilir) – Aleksej
Hangi servislerin mevcut olduğunu biliyorum, örneğin 10 Bir kişinin sahip olabileceği hizmetler. Yani hesaplama yapmak ve 10 tane olduğunu bulmak mümkün! Çok sayıda olan farklı hizmet kombinasyonlarının sayısı. Yani bu maksimum sütun sayısı olurdu. Ama çoğu sayım 0 olacak, sorun hangileri olduğunu bilmem, dolayısıyla hepsini hesaplamam gerekiyor. – Hrvoje85