我有通过tasteRating排序的表t1
<!DOCTYPE html>
<html ng-app="App">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<meta charset="utf-8">
<title></title>
</head>
<body ng-controller="Controller">
<select ng-model="model" ng-options="item as item.Text for item in list" ng-change="GetVal(model.Value)">
</select>
<pre>
my model: {{model}}
</pre>
</body>
</html>
我想要t2
Fruit | tasteRating|Cost
-----------------------
Apple | 99 | 1
Banana| 87 | 2
Cherry| 63 | 5
有没有办法根据Cost的值在SQL中动态生成总成本? 在Redshift上执行此操作。 感谢
答案 0 :(得分:7)
这样的运行总和可以使用窗口函数在modern DBMS中轻松完成:
select col_1,
sum(col_1) over (order by taste_rating desc) as col_2
from the_table;
但请注意,没有order by
的运行总和没有意义。因此,您必须包含一个定义行顺序的列。
SQLFiddle:http://sqlfiddle.com/#!15/166b9/1
编辑:(戈登) RedShift对Window函数有一些奇怪的限制。出于某种原因,它需要rows between
语法:
sum(col_1) over (order by taste_rating desc
rows between unbounded preceding and current row
) as col_2
我不知道为什么会有这个要求。 ANSI不要求它(尽管它是受支持的),并且它不是Postgres(Redshift的基础数据库)中的限制。