【发布时间】:2014-03-10 09:05:21
【问题描述】:
我正在对行号使用求和窗口函数,类似于这个查询 -
SELECT field_a,
SUM(1) OVER (PARTITION BY field_b ORDER BY field_c ASC ROWS UNBOUNDED PRECEDING) AS row_number
FROM test_table
ORDER BY row_number;
问题是如果field_c是空值,它会出现在最后。我一开始就想要它,所以 null 值被视为小于所有其他值。在 Oracle 中,这可以通过提供 NULLS FIRST 参数来完成,但在 Redshift 中不支持。那么如何在 Redshift 中实现它呢?
【问题讨论】:
-
为什么是
sum(1)而不是row_number()?首先是空值:您可以尝试order by coalesce(field_c, date '1900-01-01') -
@a_horse_with_no_name Redshift 支持窗口函数吗?
-
@CraigRinger:显然
sum(1) over (...)似乎有效 -
@CraigRinger: Apparently, it does.
标签: sql postgresql null sql-order-by amazon-redshift