例如,对于如下表:
ID | col_a | col_b | col_c
=============================
1 |5.0 |7.0 |3
2 |3.0 |6.8 |5
我需要找到 col_a / col_b 的值,其中 col_c 上的运行总计小于给定值。
到目前为止,我有:
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 子句,因为这会改变查询的整个语义。
我找到了类似问题的解决方案 -获取具有列最大值的行
大多数情况下,这些解决方案建议,我们加入同一个表,然后匹配列的值,但是计算 running_total 列并对其进行连接,我必须再次计算它吗?这听起来相当昂贵。