首页 > 解决方案 > 如何在 ingres/vectorwise 中制作 RANK() 或 ROW_NUMBER() ?发出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-server 尝试了我熟悉的不同的东西,但都没有奏效。

标签: sqlingresvectorwise

解决方案


我认为这与您所描述的相似(此处不包括一天,但您会明白的):

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#page/SQLLang%2FAnalytical_Functions.htm


推荐阅读