官术网_书友最值得收藏!

Abstracting window clauses

A windowing function allows us to add columns to the result set that have been calculated on the fly. However, what happens quite frequently is that many columns are based on the same window. Putting the same clauses into your queries over and over again is definitely not a good idea, because your queries will be hard to read and therefore hard to maintain.

The WINDOW clause allows developers to predefine a window and use it at various places in the query. Here is how it works:

SELECT country, year, production, 
min(production) OVER (w),
max(production) OVER (w)
FROM t_oil
WHERE country = 'Canada'
AND year BETWEEN 1980
AND 1985
WINDOW w AS (ORDER BY year);

country | year | production | min | max --------+-------+------------+------+------
Canada | 1980 | 1764 | 1764 | 1764
Canada | 1981 | 1610 | 1610 | 1764
Canada | 1982 | 1590 | 1590 | 1764
Canada | 1983 | 1661 | 1590 | 1764
Canada | 1984 | 1775 | 1590 | 1775
Canada | 1985 | 1812 | 1590 | 1812
(6 rows)

The example shows that min and max will use the same clause.

Of course, it is possible to have more than just one WINDOW clause—PostgreSQL does not impose serious restrictions on users here.

主站蜘蛛池模板: 闽侯县| 武鸣县| 延长县| 安福县| 揭东县| 南漳县| 满洲里市| 航空| 荣成市| 工布江达县| 和平区| 嵩明县| 禹城市| 陕西省| 灵璧县| 阿克苏市| 东海县| 盖州市| 冷水江市| 青海省| 哈尔滨市| 昭通市| 西贡区| 梨树县| 宁蒗| 台州市| 衡山县| 叙永县| 墨玉县| 曲沃县| 庄河市| 依安县| 苏州市| 右玉县| 屏东市| 扶风县| 商城县| 泰兴市| 搜索| 兰考县| 马鞍山市|