然后,我们基于 e 定义了另一个通用表表达式 t,在定义中进行了排序和分页,并且利用窗口函数 COUNT(*) 计算总的记录数,利用窗口函数 ROW_NUMBER () 计算每条数据的偏移量(行号)。
接下来,我们基于 t 返回了更多的参数,利用窗口函数 COUNT(*) 返回了当前页的实际记录数,通过窗口函数 MAX(row_nbr) 返回的当前页最大偏移量和总记录数的比较判断是否最后一页,以及当前所在的页码。
emp_id|emp_name|sex|email |actual_page_size|last_page|total_rows|row_nbr|current_page| ------+--------+---+-------------------+----------------+---------+----------+-------+------------+ 11|关平 |男 |guanping@shuguo.com| 10|N | 27| 11| 2| 12|赵氏 |女 |zhaoshi@shuguo.com | 10|N | 27| 12| 2| 13|关兴 |男 |guanxing@shuguo.com| 10|N | 27| 13| 2| 14|张苞 |男 |zhangbao@shuguo.com| 10|N | 27| 14| 2| 15|赵统 |男 |zhaotong@shuguo.com| 10|N | 27| 15| 2| 16|周仓 |男 |zhoucang@shuguo.com| 10|N | 27| 16| 2| 17|马岱 |男 |madai@shuguo.com | 10|N | 27| 17| 2| 18|法正 |男 |fazheng@shuguo.com | 10|N | 27| 18| 2| 19|庞统 |男 |pangtong@shuguo.com| 10|N | 27| 19| 2| 20|蒋琬 |男 |jiangwan@shuguo.com| 10|N | 27| 20| 2|
📝关于窗口函数的介绍可以参考这篇文章。
总结
本文介绍了如何利用窗口函数在一个语句中返回分页查询的结果和所需的全部参数,这种方法比传统的分页查询实现更加简洁高效。