2016-05-24 3 views
0

Здесь критерии Ищем (1) данные ранга по регионам (2) включают в себя верхние 3 для двух регионов и топ-5 для другой областивывода SQL-ранг элементов приведен различный максимальный ранг за единицу

Я могу получить критерии (1), используя приведенную ниже запрос:

select rank() over (partition by region order by sales_score desc) rank_by_region, 
     region, 
     sales_person 
     sales_score 
from sales_owner.data 

Если я получаю три области (север, юг, запад). Как бы я заказал ранг, что выход будет включать наверх 3 для Северного и Южного и наверх 5 для Запада?

Любая помощь очень ценится!

ответ

4

Использовать условие where с or.

select region,sales_person,sales_score from 
(
select rank() over (partition by region order by sales_score desc) rank_by_region, 
     region, 
     sales_person 
     sales_score 
from sales_owner.data 
) t 
where (region in ('North','South') and rank_by_region <= 3) 
or (region = 'West' and rank_by_region <= 5) 
+0

Это решение на 100% правильное. Он может быть немного более эффективным, если он написан как 'where rank_by_region <= 3 или (region = 'West' и rank_by_region <= 5)' - хотя я бы сказал, что решение vkp более читаемо, что является важным преимуществом. – mathguy

+0

большое спасибо! – Ariel

Смежные вопросы