【发布时间】:2020-08-05 18:21:54
【问题描述】:
我有一个表,其中包含一个列 DED,其中的数字可以从 0 到无穷大。我有兴趣将它们从 0 开始分组(上限为开区间,下限为闭区间)并获得百分比总计
假设我有一列
DED AMT
0.0004 4
0.0009 1
0.001 2
0.002 1
0.009 4
0.01 5
0.04 6
0.09 3
0.095 1
0.9 3
1 2
100 1
500 1
所以我想要以下间隔:
DED AMT PAMT
0-0.01 12 0.3529
0.01-0.02 5 0.1470
0.04-0.05 6 0.1764
0.09-0.1 4 0.1176
0.9-1 3 0.0882
1 2 0.0588
我试过了:
SELECT CAST(DED/.02*.02 AS VARCHAR) +' - '+CAST(DED/.02*.02 +.01 AS VARCHAR) AS DED,
SUM(AMT) AS AMT,ISNULL(SUM(AMT)*1.000/NULLIF(SUM(SUM(AMT)) OVER (),0),0) AS PAMT
FROM MYTABLE
WHERE DED/.02*.02<=1
GROUP BY DED/.02*.02
感谢您的帮助
【问题讨论】:
-
你是说你想要那些特定的硬编码范围吗?或者是否有一些公式或算法来定义范围?
标签: sql sql-server group-by window-functions