【问题标题】:SQL - select top xx% rowsSQL - 选择前 xx% 行
【发布时间】:2014-05-22 14:09:22
【问题描述】:

我有一张桌子,sales,按降序排列 TotalSales

user_id  |   TotalSales  
----------------------
4              10 
2              1.5 
5              0.99  
3              0.5    
1              0.33    

我想做的是找出 xx% 最重要的销售额占所有销售额的百分比。
例如,如果我想为前 40% 的销售额做这件事,我会得到 (10+1.5)/(10+1.5+0.99+0.5+0.33)= 86% 但现在我无法选择“前 xx% 行”。

编辑:数据库管理系统可以是 MySQL 或 Vertica 或 Hive

【问题讨论】:

  • 发布表的预期输出以及哪个 DBMS?

标签: sql count sum


【解决方案1】:
select Sum(a)  as s from sales where a in (Select TotalSales from sales where TotalSales>=x)

GROUP BY a


select Sum(TotalSales) as b from sales group by b

你的结果是s/b

x= the percentage you set each time

【讨论】:

  • 除了我不认为 TotalSales 是一个百分比 - OP 想要 40%,但该列的 total 甚至不是 20。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
相关资源
最近更新 更多