Как сделать RANK() или ROW_NUMBER() в ingres/vectorwise? выдать код sql
Я пишу SQL-запрос, чтобы получить продажи для разных магазинов в данный день. Запрос выполняется для ingres/vectorwise. Я хочу добавить рейтинг в колонке, где есть рейтинг магазина в отношении продаж, сделанных по сравнению со всеми магазинами.
Мое утверждение выбора выглядит следующим образом:
SELECT store_number, sum(sales) as sales
FROM stores_sales_indicators
WHERE day = '2019-07-24'
GROUP BY store_number
Я пробовал разные вещи, которые мне знакомы с sql-сервера, но ничего из этого не сработало.
1 ответ
Решение
Я думаю, что это похоже на то, что вы описываете (ни один день здесь не включен, но вы поймете):
declare global temporary table session.stores_sales_indicators
(
store_number integer not null,
sales integer not null
)
on commit preserve rows with norecovery, structure=x100;
insert into session.stores_sales_indicators
values(1,100),(1,200),(2,500),(2,50),(3,50),(3,300);
select
store_number,
sum(sales) as sales,
rank() over (order by sum(sales) desc) as rank
from session.stores_sales_indicators
group by store_number;
Смотрите также прекрасное руководство, вот ссылка на раздел об аналитических функциях: https://docs.actian.com/vector/5.1/index.html