numaralı belgede, durumdan sonraki bir durumu kullanabilir. aşağıda benim sorgu.farklı ve WHERE tümcesinde
sayesinde
select unit_id, law_id, risk, count(risk) as crr
from schema.table1
group by unit_id, law_id, risk
order by crr desc, risk desc
sonuç
unit_id |law_id | risk | crr
----------------------------------
| 1 | 3 |Significant| 3
| 1 | 3 |Limited | 3
| 3 | 2 |Significant| 1
| 1 | 1 |Significant| 1
| 2 | 2 |Medium | 1
| 1 | 3 |Critical | 1
ve onlara
select unit_id, law_id, a.risk,
rank() OVER (PARTITION BY unit_id, law_id ORDER BY crr DESC, risk DESC) as rank
from (select unit_id, law_id, risk, count(risk) as crr
from schema.table1
group by unit_id, law_id, risk
order by crr desc, risk desc
) a
sonuçları
unit_id |law_id | risk | rank
----------------------------------
| 1 | 1 |Significant| 1
| 1 | 3 |Significant| 1
| 1 | 3 |Limited | 2
| 1 | 3 |Critical | 3
| 2 | 2 |Medium | 1
| 3 | 2 |Significant| 1
sıralanarak
Sorgularımda aşağıdaki sonuçları alıyorum. ama ben 1 olan tüm rütbeleri elde etmek ve 1'inci sırada görmezden gelmek ve yukarıdaki sonuçlardan herhangi biri varsa Kritik (rütbe ne olursa olsun) almak istiyorum. Aşağıdaki gibi bir sonuç almak istiyorum.
select unit_id, law_id, risk FROM
(select unit_id, law_id, a.risk,
rank() OVER (PARTITION BY unit_id, law_id ORDER BY crr DESC, risk DESC) as rank
from (select unit_id, law_id, risk, count(risk) as crr
from schema.table1 group by unit_id, law_id, risk
order by crr desc, risk desc
) a )b WHERE rank = 1 or risk = 'Critical'
gerçek sonuçlar
unit_id |law_id | risk
----------------------------
| 1 | 1 |Significant
| 1 | 3 |Significant
| 1 | 3 |Critical
| 2 | 2 |Medium
| 3 | 2 |Significant
Beklenen Sonuçlar
unit_id |law_id | risk
----------------------------
| 1 | 1 |Significant
| 1 | 3 |Critical
| 2 | 2 |Medium
| 3 | 2 |Significant
Çok teşekkürler Sagi. Çalışıyor – Taz
Sorun değil :) @Taz – sagi