Sql 如何构造子查询/CTE以替换嵌套的聚合函数?
我试图找出每个“百分比”存储桶的“金额”值百分比 示例数据:Sql 如何构造子查询/CTE以替换嵌套的聚合函数?,sql,netezza,Sql,Netezza,我试图找出每个“百分比”存储桶的“金额”值百分比 示例数据: amt | pct 5 | .5 10 | .6 15 | 1 20 | .8 预期结果: pctAMT | PCTrange .3 | <65 .4 | 75-84 .3 | 100+ pctAMT | PCTrange .3 |我希望这样: SELECT (CASE WHEN percent < 0.65 then ' <65' WHEN per
amt | pct
5 | .5
10 | .6
15 | 1
20 | .8
预期结果:
pctAMT | PCTrange
.3 | <65
.4 | 75-84
.3 | 100+
pctAMT | PCTrange
.3 |我希望这样:
SELECT (CASE WHEN percent < 0.65 then ' <65'
WHEN percent < 0.75 then '65-74'
WHEN percent < 0.85 then '75-84'
WHEN percent < 0.95 then '85-94'
WHEN percent < 1.00 then '95-99'
ELSE ' 100+'
END) as PCTrange,
SUM(amt)/ SUM(SUM(amt)) OVER () AS pctAMT
FROM table
WHERE date = '2016-04-01'
GROUP BY PCTrange
ORDER BY PCTrange;
SELECT(百分比<0.65时的大小写),然后用正在使用的数据库标记您的问题。您的错误看起来像Netezza,因此我添加了该标记。
SELECT (CASE WHEN percent < 0.65 then ' <65'
WHEN percent < 0.75 then '65-74'
WHEN percent < 0.85 then '75-84'
WHEN percent < 0.95 then '85-94'
WHEN percent < 1.00 then '95-99'
ELSE ' 100+'
END) as PCTrange,
SUM(amt)/ SUM(SUM(amt)) OVER () AS pctAMT
FROM table
WHERE date = '2016-04-01'
GROUP BY PCTrange
ORDER BY PCTrange;