2016-04-16 1 views

ответ

2

Вы можете использовать функцию функции окна, которая была добавлена ​​в Spark 1.4 Предположим, что у нас есть таблица продуктов, как показано ниже. enter image description here

ответ на Каковы лучшие продажи и второй наиболее продаваемых продуктов в каждой категории выглядит следующим образом

SELECT product,category,revenue FROM 
    (SELECT product,category,revenue,dense_rank() 
     OVER (PARTITION BY category ORDER BY revenue DESC) as rank 
    FROM productRevenue) tmp 
WHERE rank <= 2 

Tis даст вам желаемый результат

+0

Это прекрасно работает в scala. Тем не менее, как строки SQL это происходит со странной ошибкой, как описано здесь https://gist.github.com/geoHeil/3dff11860ae042792cea6970447c4592 сбой: '' union '' ожидается, но '('found –

+2

Решение: http://stackoverflow.com/вопросы/31786912/искровых отказ-союз ожидалось, но обнаружили, –

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

  • Нет связанных вопросов^_^