按起始点和结束点sql server的动态间隔分组

6ju8rftf  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(355)

我有一个包含列的表 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

谢谢你的帮助

oipij1gg

oipij1gg1#

SELECT
  ROUND(DED, 2, 1)          AS DED_lower,
  ROUND(DED, 2, 1) + 0.01   AS DED_upper,
  SUM(AMT)                  AS SUM_AMT, 
  SUM(AMT) * 1.0
  /
  SUM(AMT) OVER ()          AS PAMT
FROM
  mytable
WHERE
  DED <= 1
GROUP BY
  ROUND(DED, 2, 1)
``` `ROUND(DED, 2, 1)` 将四舍五入到小数点后两位。给出尺寸为0.01的等尺寸带。
抱歉,我在打电话

相关问题