Как сделать 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

Другие вопросы по тегам