2017-08-13 2 views
-1

Le tableau exemplehive - Top N avec plusieurs mesures en une seule requête?

value measurement1 measurement2 
-------|-------------|----------- 
value1  1   **2** 
value2  **3**   **3** 
value3  **2**   1 

Ensuite, trouver top valeur la plus élevée 2, Je veux obtenir le résultat ci-dessous:

top 2 by measurement1 top 2 by measurement2 
---------------------|---------------------- 
     value2     value2  
     value3     value1 

Répondre

0

Vous pouvez le faire en utilisant row_number() et join:

select s1.value1 as col1, 
     s2.value2 as col2 
from (select s.*, 
      row_number() over (order by value1) as seqnum 
     from sample s 
    ) s1 join 
    (select s.*, 
      row_number() over (order by value2) as seqnum 
     from sample s 
    ) s2 
    on s1.seqnum = s2.seqnum 
where s1.seqnum <= 2 
order by s1.seqnum;