我有一个查询,需要将PARTITION BY
与2个字段一起使用。我正在这样做:
SELECT
ROW_NUMBER()
OVER (PARTITION BY
id, country_id
ORDER BY
id, country_id) AS row_number
FROM
cities
...
问题是country_id
中使用的第二个聚合字段PARTITION BY
可以是NULL
,我需要将ROW_NUMBER()
进行汇总。
row_number()
仅在结果集中存在具有相同id
和country_id
的记录时才进行汇总。如果有一条记录具有相同的id
和country_id
或相同的id
和country_id
是NULL
,我希望对它进行总结。
有办法吗?
答案 0 :(得分:2)
您可以如下所示使用合并:
SELECT
ROW_NUMBER()
OVER (PARTITION BY
id, Coalesce(country_id,0)) AS row_number
FROM
cities
...
答案 1 :(得分:1)
如果值之一为NULL
,则没有区别。另一方面,按相同的列进行排序没有用。在Postgres中,order by
是可选的,因此您可以执行以下操作:
row_number() over (partition by id, country_id)
答案 2 :(得分:1)
尝试替换为空
SELECT
ROW_NUMBER()
OVER (PARTITION BY
id, ISNULL(country_id,-1)
ORDER BY
id, ISNULL(country_id,-1)) AS row_number
FROM
cities
...