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;