MySQL窗口_分布、前后、头尾函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL窗口_分布、前后、头尾函数相关的知识,希望对你有一定的参考价值。
参考技术A接上一篇,这一篇主要介绍三类窗口函数,分布函数、前后函数和头尾函数。
【分布函数】
PERCENT_RANK基于RANK()函数的排序结果,percent_ranks列按照公式(rank-1) / (rows-1)带入rank值(row_num列)和rows值,其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数。
CUME_DIST,分组内小于等于当前rank值的行数/分组内总行数,这个函数比percen_rank使用场景更多。可以用于计算大于等于或小于等于当前订单金额的订单比例有多少。
【前后函数】
分区中位于当前行前n行(LAG)或后n行(LEAD)的记录值。这两个函数在实际中还是有使用场景,比如要查询上一个订单距离当前订单的时间间隔,或者本条订单距离下一条订单的时间间隔。
如果要计算距离上一条订单的天数,只需要增加一列,用DATEDIFF函数把两个日期相减就可以了。如果是第一条订单,就会返回空值。
【头尾函数】
头尾函数FIRST_VAL和LAST_VAL函数,用来得到分区中的第一个或最后一个指定参数的值。可以用来查询每个用户第一次和最后一次的订单数据信息,然后就行比较操作。需要注意的是,最后一条订单时间是基于当前订单时间来看的,所有是等于当前订单时间。
End
◆ PowerBI开场白
◆ Python高德地图可视化
◆ Python不规则条形图
前后端分离中,Gulp实现头尾等公共页面的复用
前言
通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的。例如:头部,底部,侧边栏等等。如果前后端分离时,制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面的数量上去了而中途公共的部分出现要修的地方。不过有上10个页面都用到了这个公共的html
代码。那修改起来不是很麻烦吗?
一些其他方法比如ifram,import都不够优雅,并且源代码中的不显示的,也就不利于SEO
头部:
尾部:
对于后端的同学而言,他们可以通过模版来进行拆分。这样做可以提高html
代码的复用性和可维护性。但对于只是对设计图而制作成静态页面的同学而言他们,html
没有提供像模版的include
这种方法。但又不想使用到后端的模版,那么接下来的我介绍的几个工具也许可以帮助到你。
gulp-file-include
第一个我要介绍的是一个gulp
的插件,他提供了一个include
的方法让我们可以想后端模版一样把公共的部分分离出去。而且提供的include
方法有许多配置项,详细可以去看看 gulp-file-include。
下面我们写一个小demo
来快速的了解一下,我们需要先安装gulp
以及gulp-file-include
。
npm install -g gulp
mkdir gulp-file-include && cd gulp-file-include
npm install gulp --save-dev
npm install gulp-file-include --save-dev
安装好之后,来简单的组织一下文件的目录:
|-node_modules |-page // 生产环境的 html 存放文件夹 |-include // 公共部分的 html 存放文件夹 |-*.html |-dist // 编辑后的 html 文件 gulpfile.js
在新建的gulpfile.js
,配置好gulp-file-include
:
var gulp = require(\'gulp\'); var fileinclude = require(\'gulp-file-include\'); gulp.task(\'fileinclude\', function() { // 适配page中所有文件夹下的所有html,排除page下的include文件夹中html gulp.src([\'page/**/*.html\',\'!page/include/**.html\']) .pipe(fileinclude({ prefix: \'@@\', basepath: \'@file\' })) .pipe(gulp.dest(\'dist\')); });
接着新建两个html
文件,分别是头部和底部:
header.html
<h1>这是 header 的内容</h1>
footer.html
<h1>这是 footer 的内容</h1>
最后在新建一个html
,把要用到的header
和footer
给include
进来。
layout.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> @@include(\'include/header.html\') <p> 这是 layout 的内容 </p> @@include(\'include/footer.html\') </body> </html>
最后回到命令行工具里,执行gulp fileinclude
:
看到编译完成之后,到dist
目录一下有一个layout.html
的文件,这就是最后编译出来的。
好了,上面的一个小实例也明白之后。也许能够在以后的工作中大大提供生产力,使得自己写的html
代码更加具有维护性和可复用性。
以上是关于MySQL窗口_分布、前后、头尾函数的主要内容,如果未能解决你的问题,请参考以下文章