简述什么是oracle的窗口函数

简述什么是oracle的窗口函数
最新回答
为一道彩虹

2020-08-25 23:33:59

窗口函数可以计算一定 记录范围内、一定值域内、或者一段时间内的累计和以及移动平均值等等.之所以使用窗口这个术语,是因为对结果的处理使用了一个滑动的查询结果集范围。
云终韵

2022-12-06 08:21:23

通过举例,快速理解窗口函数。

2.1 举例

1)创建表 user,表 user 的数据如下

  • mysql> select * from user;+‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+| id | name | address | createtime |+‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+| 1 | aa | cun | 2020‐06‐01 00:00:00 || 2 | bb | cun | 2020‐06‐01 00:00:00 || 3 | bb | shi | 2020‐06‐01 01:00:00 || 4 | bb | shi | 2020‐06‐01 01:00:00 || 5 | cc | cun | 2020‐06‐01 01:00:00 || 6 | tt | cun | 2020‐06‐03 01:00:00 || 7 | eee | cun | 2020‐06‐04 01:00:00 || 8 | eee | cun | 2020‐06‐04 01:00:00 || 9 | xx | shen | 2020‐06‐02 01:00:00 |+‐‐‐‐+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+9 rows in set (0.00 sec)


  • 2)窗口函数的使用

  • SELECT createtime,row_number() over(order by createtime) AS crFROM user ;+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐+| createtime | ll |+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐+| 2020‐06‐01 00:00:00 | 1 || 2020‐06‐01 00:00:00 | 2 || 2020‐06‐01 01:00:00 | 3 || 2020‐06‐01 01:00:00 | 4 || 2020‐06‐01 01:00:00 | 5 || 2020‐06‐02 01:00:00 | 6 || 2020‐06‐03 01:00:00 | 7 || 2020‐06‐04 01:00:00 | 8 || 2020‐06‐04 01:00:00 | 9 | +‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐+9 rows in set (0.00 sec)


  • row_number() over(order by createtime) as cr 这部分为窗口函数。over(order by createtime)为窗口规范,函数 row_number() 即对窗口的数据进行编号。所以上述 sql 的意思为:先对 createtime 进行排序,然后对每行数据进行编号。