直观理解:MySQL常用窗口函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直观理解:MySQL常用窗口函数相关的知识,希望对你有一定的参考价值。
参考技术A窗口函数(window functions),也叫分析函数和OLAP函数,MySQL在8.0之后开始支持窗口函数。窗口函数可以用来对数据进行实时分析处理,和group by有类似之处,其区别在于窗口会对每个分组之后的数据按行进行分别操作,而group by一般对分组之后的函数使用聚合函数汇总,做不到对不同的group中的行数据进行分别操作。这就简单介绍几种常见的MySQL窗口函数。下表中列出了几种常见的窗口函数,并对其基本功能进行了描述。接下来我们会以一段示例,来展示MySQL中窗口函数的用途和效果。
假设我们存在一张如下的员工工资表,接下来我们将以这张表对窗口函数的使用方法进行简单的演示。
窗口函数的语法如下,所有的窗口函数均遵循以下语法:
其中 frame_clause 语法如下。
接下来我们将展示一些场景的窗口函数的用法和效果。
示例: 对所有员工按照薪资降序排序,并给出对应的row_number、rank和dense_rank的排名
示例: 对每个部门的员工按照薪资降序排序,并给出对应的row_number、rank和dense_rank的排名
示例: 对所有员工按照薪资降序排序,并给出对应的row_number、rank和dense_rank的排名,最终结果按照员工号进行排序输出。
示例: 找出每个部门工资最高的人。
示例: a.将所有员工按照工资递增的顺序分成4组。b.根据员工入职日期升序分成7组。
示例: 获取每个部门,按工资从低到高得累计和。
示例: 获取每个部门得工资累计和。
示例: 获取整个公司的薪资按照薪资递增的累计和。
示例: 获取整个公司的薪资按照薪资递增的前两行和后一行范围内的薪资和。
示例: 每个部门的平均工资。
示例: 获取整个公司的薪资按照薪资递增的前两行和后一行范围内的薪资平均值。
示例: 根据薪资排序,获取CUME_DIST()和PERCENT_RANK()
示例: a. 获取每个人入职前一行的数据,默认值为"2021-01-01";b. 获取每个人入职前两行的数据,不设置默认值;c. 获取每个人入职后一行的数据,默认值为"2022-01-01";d. 获取每个人入职后两行的数据,不设置默认值;
示例: a. 按照入职日期顺序排序,找出当前每个部门最先入职的人的薪资。b. 按照入职日期顺序排序,找出当前每个部门最后入职的人的薪资。
示例: a.获取截至当前工资第二高的人的工资。b.获取第二个入职的人的工资。
直观理解万能近似定理(Universal Approximation theorem)
文本是教程"The Universal Approximation Theorem for neural networks" by Michael Nielsen 的笔记。
Universal approximation theorem
为什么MLP可以拟合任意的函数?
我们考虑一个最简单的神经网络,最后一层是sigmoid函数:
事实上这就是一个线性函数,然后经过sigmoid扭曲为一条曲线,显然,b决定了不同截距,从而导致sigmoid位置发生了平移。类似的,w决定了线的斜率,从而影响sigmoid倾斜程度:
如果我们将斜率w设置为非常大,那么这个sigmoid函数将成为一个分段函数:
如果熟悉决策树的话,其实已经可能有同学猜到这个分段函数怎么去近似任意的函数了,其实很直接,我们可以构造很多个不同的分段函数:
然后将他们以某种权重相加,就能得到一条经过两次分段的函数:
只要我们有足够多的分段函数,并且仔细调整他们相加的权重,我们就能近似任意的函数:
在多维函数也是类似的,只是变成一种对空间的划分,只要划分足够多,总能近似任意的函数。
参考资料
以上是关于直观理解:MySQL常用窗口函数的主要内容,如果未能解决你的问题,请参考以下文章