SAP HANA 功能:评估

SAP HANA function: Evaluate

客户 table 有一个包含项目列表的客户列表。

我们已经收到了带有等级的物品清单。 所以我们要通过排名求和来找出客户排名。

Customer ID| Items | rank 1 | 1 | 1 1 | 1 | 1 1 | 2 | 4 1 | 2 | 4 1 | 3 | 1

想要输出

CustomerID | rank 1 | 6

当涉及到每个客户时,我总是感到困惑。非常感谢任何帮助!

我添加了一些标签,如果它们不相关,请原谅!

对于 HANA,查询将如下所示(带有一些测试数据):

create column table "CustomerItems"
("CustomerID" nvarchar(10),
 "Items"      nvarchar(10),
 "CRank"     integer
);


insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('1', '1', 1 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('1', '1', 1 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('1', '2', 4 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('1', '2', 4 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('2', '1', 3 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('2', '1', 3 );
insert into "CustomerItems" ("CustomerID", "Items", "CRank") values ('2', '3', 5 );

select "CustomerID", Sum(distinct("CRank"))
  from "CustomerItems"
  group by "CustomerID"
  order by "CustomerID"

我不会使用 "Rank" 作为列名。这是一个 reserved word(window 函数),可能会导致混淆。

对于 MySQL 只需将 create column table 替换为 create table 并将双引号替换为反引号。

如果这回答了您的问题,我还会推荐一些关于 SQL 的介绍性书籍或在线教程。 如果没有,请提供更多信息,创建 table 声明等

评论后编辑并更改测试数据:

如果你想总结 "ranks" Customer/Item 的不同组合,试试这个(对于 MySQL 再次反引号而不是双引号,你必须给出子查询自己的别名):

select "CustomerID", sum("CRank")
from 
(
select distinct "CustomerID", "Items", "CRank"
  from "CustomerItems"
)
  group by "CustomerID"
  order by "CustomerID"