【发布时间】:2014-01-06 01:33:23
【问题描述】:
例如,对于这样的表:
ID | col_a | col_b | col_c
=============================
1 |5.0 |7.0 |3
2 |3.0 |6.8 |5
我需要找到 col_c 上的运行总计小于给定值的 col_a / col_b 的值。
到目前为止我有:
select MAX(running_total) as max FROM (select (col_a / col_b) as val, SUM(col_c)
OVER (ORDER BY value ROWS UNBOUNDED PRECEDING) as running_total FROM tableName)
WHERE running_total < 50;
这给了我最大的运行总计,但我还需要达到此 running_total 的行的 val (col_a/col_b)。
我正在使用 Amazon Redshift 进行此查询,与 mysql 不同,它不允许我将 val 放在外部 select 语句中,而无需在 val 上添加 group by 子句。我无法添加 group by 子句,因为这会改变查询的整个语义。
我找到了类似问题的解决方案 - Fetch the row which has the Max value for a column
这些解决方案大多建议,我们加入同一个表,然后匹配列的值,但是计算 running_total 列并对其进行连接,我必须再次计算它吗?这听起来相当昂贵。
【问题讨论】:
标签: sql postgresql amazon-redshift