у меня есть 2 таблицы product & psales, данные в таблицах как показано ниже
select * from psales;
+-------------+---------------+--+
| psales.pid | psales.sales |
+-------------+---------------+--+
| 1 | 100 |
| 1 | 150 |
| 1 | 200 |
| 2 | 75 |
| 2 | 45 |
| 2 | 145 |
| 3 | 176 |
| 3 | 99 |
| 1 | 27 |
| 4 | 51 |
+-------------+---------------+--+
select * from product;
+--------------+----------------+--+
| product.pid | product.pname |
+--------------+----------------+--+
| 1 | p1 |
| 2 | p2 |
| 3 | p3 |
| 4 | p4 |
+--------------+----------------+--+
Цель состоит в том, чтобы получить продукт со 2-ыми самыми высокими объединенными продажами.
Вотзапрос, который я сейчас использую, чтобы получить продукт с наивысшими совокупными продажами (работает нормально)
select p1.pname, p1.total_sales
from (select p.pid as pid, p.pname as pname, s.sales as sales,
sum(s.sales) over (partition by p.pid order by p.pid) as total_sales
from product p
inner join psales s on (p.pid = s.pid)
order by total_sales desc) p1
limit 1;
Как мне получить продукт с 2-м по величине совокупными продажами?
Когда я пытаюсьполучить row_num во внутреннем запросе, это выдает ошибку, показанную ниже:
select p1.pname as pname, p1.total_sales as total_sales, row_num() over (partition by pname order by pname) as rownum
from (select p.pid as pid, p.pname as pname, s.sales as sales,
sum(s.sales) over (partition by p.pid order by p.pid) as total_sales,
row_num() over (partition by p.pid) as rownum
from product p
inner join psales s on (p.pid = s.pid)
order by total_sales desc) p1
where rownum =2;
Ошибка: ошибка при компиляции оператора: FAILED: SemanticException Не удалось разбить вызовы Windowing на группы.Как минимум 1 группа должна зависеть только от входных столбцов.Также проверьте наличие циклических зависимостей.Основная ошибка: Неверная функция row_num (состояние = 42000, код = 40000)
Заранее спасибо за помощь.