Roh*_*han 0 sql postgresql null sql-order-by amazon-redshift
我对行号使用求和窗口函数,类似于此查询-
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;
Run Code Online (Sandbox Code Playgroud)
问题在于,如果field_c为空值,它将显示在末尾。我在一开始就想要它,因此将null值视为小于所有其他值。在Oracle中,可以通过提供NULLS FIRST参数来实现,但是Redshift不支持该参数。那么如何在Redshift中实现它呢?
我在一开始就希望它为[null],因此将null值视为小于所有其他值。
使用表达式
field_c IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
作为第一ORDER BY项。
FALSE如果为NULL
TRUE ,则评估为..... 如果为非。
并且FALSE(0)在TRUE(1)之前排序。适用于任何数据类型和任何可能的值分布。
SELECT field_a,
row_number() OVER (PARTITION BY field_b
ORDER BY field_c IS NOT NULL, field_c) AS row_number
FROM test_table
ORDER BY row_number;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |