【发布时间】:2013-12-05 04:17:24
【问题描述】:
Joshua Taylor 在回答以下问题时提出了一种非常优雅的计算 SPARQL 排名的方法 How to rank values in SPARQL?
但是,我需要聚合 + 排名作为第一步,以获取“占销售额前 50% 的国家/地区”等查询的累积百分比。
假设我们在州一级有销售
California 30
Arizona 25
...
Alberta 25
Quebec 20
...
我需要先按国家汇总并获得国家的排名如下
United States 250 1
Canada 200 2
Mexico 150 3
...
如何在 SPARQL 中编写 Aggregation + Rank 来概括上面提到的 Joshua 的答案?
对于下一步,我需要使用以下排名进行累积总和
United States 250 1 250
Canada 200 2 450
Mexico 150 3 600
...
为了用 SPARQL 编写这个,我想我可以使用这里报告的 SQL 技巧 how to get cumulative sum
如果以上都成功了,那么我们可以试试累计百分比。现在假设所有国家/地区的总销售额为 1000。那么结果将是
United States 250 250
Canada 200 450
为了在 SPARQL 中编写这个,我们可以使用 SQL 中类似的东西
SELECT CountryName, SalesAmount
FROM CumSalesCountry
WHERE CumSalesAmount <=
(SELECT MIN(CumSalesAmount) FROM CumSalesCountry
WHERE CumSalesAmount >=
(SELECT 0.5 * SUM(SalesAmount) FROM SalesCountry) ) )
对此的任何帮助将不胜感激
Esteban(努力在 SPARQL 中编写类似 BI 的查询...)
【问题讨论】:
标签: sparql aggregation rank