【发布时间】:2019-07-29 16:21:15
【问题描述】:
我试图找出“amt”值的百分比属于每个“百分比”存储桶。
示例数据:
amt | pct
5 | .5
10 | .6
15 | 1
20 | .8
期望的结果:
pctAMT | PCTrange
.3 | <65
.4 | 75-84
.3 | 100+
我尝试过使用嵌套聚合函数,也尝试将总计用作单个值。但是,我遇到了错误。我想我必须将查询重新构建为 CTE 或子查询,但我不确定如何。
SELECT SUM(amt)/(SUM(amt) OVER()) AS pctAMT,
CASE WHEN percent < .65 then ' <65'
WHEN .65 <= percent AND percent <.75 then '65-74'
WHEN .75 <= percent AND percent <.85 then '75-84'
WHEN .85 <= percent AND percent <.95 then '85-94'
WHEN .95 <= percent AND percent <1.00 then '95-99'
WHEN .100 <= percent then ' 100+'
END PCTrange
FROM table
WHERE date = TO_DATE('2016-04-01','YYYY-MM-DD')
GROUP BY PCTrange
ORDER BY PCTrange;
ERROR [HY000] ERROR: Attribute LN_HIST.LN_FNCL_RPTG_UPB must be GROUPed or used in an aggregate function
【问题讨论】:
-
用您正在使用的数据库标记您的问题。你的错误看起来像 Netezza,所以我添加了那个标签。