MySql教程

【学习打卡】第12天 MySQL8.0版本新特性

本文主要是介绍【学习打卡】第12天 MySQL8.0版本新特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程章节:第5章 窗口函数

主讲老师:董旭阳(Tony.Dong)

课程内容
一、窗口函数基本概念(window function)(分析函数)

二、专用窗口函数

1、用于排名:row_number(),rank(),dense_rank(),percent_rank()

2、用户获取窗口第一名或最后一名:first_value(),last_value(),

前面第几名或者后面第几名:lead(),lag()

3、累计分布,累计到现在占了多少cume_dist(),

排名第几名的函数nth_value(),

比分位ntile(),比如四分之一百分位(占百分值二十五)

三、窗口定义(完整的窗口定义)

写法:window_function(expr)

OVER(partiton by...

order by ....

frame_clause

)

课程收获
一、窗口函数也称为分析函数,用于在sql语句中做数据分析用的,与聚合函数类似但是每一行数据都生成一个结果。

关键部分:聚合函数OVER (partition by) as 别名

用法:Select 列1,列2,列3, avg(列3) OVER(partition by 列2) as 别名 from 表;

如:Select year,country,product,profit,sum(profit) OVER (partition by country) as contry_profit

From sales order by country,year,product,profit;

OVER不区分大小写, OVER与后面的括号直接要有空格

二、关于完整的窗口定义,用一个例子可以帮助更好的理解

Select year,country,product,profit,sum(profit) OVER (partition by country order by profit rows unbounded preceding ) as running_total

From sales order by country,profit;

计算一个利润的总和,首先按照国家进行分区,然后按照利润进行排序,排序完成之后,对于每一行计算,从最开始那一行到当前行结束(后面不写就默认到当前行结束).

https://img3.sycdn.imooc.com/62f687b30001632109670331.jpghttps://img4.sycdn.imooc.com/62f687ce0001ac1009610539.jpg

 https://img3.sycdn.imooc.com/62f687e70001869c09930650.jpg



这篇关于【学习打卡】第12天 MySQL8.0版本新特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!