假想聚集很像标准的有序集。不过,它们能帮助回答一种不同类型的问题:如果一个值在其中,那么结果会怎样?这不是关于数据库内实际存在的值,而是有关一个特定值真实存在时的假想结果。
SELECT
region,
rank(9000) WITHIN GROUP (
ORDER BY
production DESC NULLS LAST
)
FROM
t_oil
GROUP BY
ROLLUP (1);
region | rank
---------------+------
Middle East | 21
North America | 27
| 47
(3 rows)
如果某地区production 9000,那将是中东地区第21好的年份以及北美地区第27好的年份。
备注:在数据被排序时,空值通常都排在最后。不过,即使排序顺序反过来,空值应该仍然在最后,NULLS LAST
就能确保这一点。