SAP HANA职能:评估

时间:2017-05-31 17:07:39

标签: mysql sql database hana

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

我们收到了一份排名的项目清单。 因此,我们必须通过总结排名来找出客户排名。

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

期望输出

CustomerID | rank 1 | 6

每个客户都会感到困惑。非常感谢任何帮助!

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

1 个答案:

答案 0 :(得分:2)

对于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(窗口函数),可能导致混淆。

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

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

评论后修改并更改测试数据:

如果你想总结你的排名"客户/项目的不同组合,尝试这一个(对于MySQL再次反对,而不是双引号,你必须给子查询自己的别名):

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