sql - 按具有起点和终点 SQL Server 的动态间隔分组
问题描述
我有一个表,其中包含一个列,其中的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
谢谢你的帮助
解决方案
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 的相同大小的条带。
为错别字或格式道歉,我在打电话
推荐阅读
- php - 如何解决未找到列:基于此查询生成器的“字段列表”中的 1054 列“产品”未知?
- c# - .NET 项目中的 ToolsVersion 规范
- python - 将scrapy设置为django中的应用程序时出现“moduleNotFoundError”
- java - 如何在循环中生成 Spark 数据集聚合长专家?
- bluetooth - 经典模式下的 BT 4.2 会连接到 BT 2.1+EDR 吗?
- javascript - jQuery 将两个 id 合并为一个
- python - AttributeError:模块“tensorflow”没有属性“get_default_graph”
- ruby - 似乎无法运行 ruby 2.6.0 自制版本 - 总是引用系统 ruby 2.3.0
- c# - 将数据从模型导入视图给我一个我无法解决的错误
- reactjs - 抓取 Google 显示空白页 - Reactjs