MySQL-窗函数 从8.0版开始,MySQL已支持窗口功能。 窗口功能能够以新的,更轻松的方式并以更好的性能解决查询问题。假设有一个销售表,其中存储了按员工和会计年度划分的销售额:
图表信息 聚合函数将多行中的数据汇总到单个结果行中。 例如,SUM()函数返回记录的年份中所有雇员的总销售额:
GROUP BY子句允许将聚合函数应用于行的子集。 例如要按会计年度计算总销售额:
在两个示例中,聚合函数都减少了查询返回的行数。像带有GROUP BY子句的聚合函数一样,窗口函数也可对行的子集进行操作,但它们不会减少查询返回的行数。例如,以下查询返回每个雇员的销售额以及该雇员按会计年度的总销售额:
这个例子中,SUM()函数用作窗口函数,该窗口函数对由OVER子句的内容定义的一组行进行操作。 SUM()函数应用到的一组行称为窗口。SUM()窗口函数像使用GROUP BY子句的查询那样按年度报告总销售额,而且还报告每一行的结果,而不返回总行数。窗口函数是在所有JOIN,WHERE,GROUP BY和HAVING子句之后以及ORDER BY,LIMIT和SELECT DISTINCT之前的结果集上执行的。在这个例子中,SUM()函数用作在由OVER子句的内容定义的一组行。 基本语句:
解释: 在这个语法中: 首先,指定窗口函数名称,后跟一个表达式。 其次,指定具有三个可能素的OVER子句:分区定义,顺序定义和框架定义。 没有表达式,OVER子句后的左括号和右括号是一定要写的,例如:
partition_clause语法:partition_clause将行分成块或分区。两个分区由分区边界分隔。 窗口功能在分区内执行,并在跨越分区边界时重新初始化。 PARTITION BY <expression>[{,<expression>…}] order_by_clause语法:ORDER BY <expression> [ASC|DESC], [{,<expression>…}] ORDER BY子句指定分区中行的排序方式。可以在多个键上的分区中对数据进行排序,每个键由一个表达式指定。多个表达式也用逗号分隔。与PARTITION BY子句相似,所有窗口函数也支持ORDER BY子句。但是,仅对顺序敏感的窗口函数使用ORDER BY子句才有意义。 窗函数:
官网上的资料:
参考资料:https://www.mysqltutorial.org/mysql-window-functions/https://www.mysqltutorial.org/mysql-aggregate-functions.aspxMySQL 8.0.2: Introducing Window Functionshttps://medium.com/@marcosanchezayala/how-and-when-to-use-mysql-window-functions-910635f7c83dhttps://tableplus.com/blog/2019/10/mysql-window-functions.html
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/68093.html