推广 热搜: page  使用  音视频  个数  搜索引擎  选择  企业  百度  可以  父亲 

MySQL 取聚合函数中第一条记录

   日期:2024-12-30     作者:007rb    caijiyuan   评论:0    移动:http://ww.kub2b.com/mobile/news/15713.html
核心提示:主要说一下group_concat 这个作用是分组拼接语法:group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [


主要说一下group_concat 这个作用是分组拼接

语法:group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
案例:
原始数据


使用group_concat对platform进行拼接:

添加distinct进行去重拼接、按照platform进行倒序排序、按照$号进行分割:

聚合函数与窗口函数的区别:

窗口函数和聚合函数类似之处在于它也是对一组数据进行分析;但是,窗口函数不是将一组数据汇总为单个结果;而是针对查询中的每一行数据,基于和它相关的一组数据计算出一个结果。下图演示了聚合函数和窗口函数的区别:

例如上述列子,及时先通过年份、uid进行分组,然后在分组结果的基础上进行开窗计数的

窗口函数是mysql8.0版本之后才支持的

窗口函数定义
分区(PARTITION BY)

用于为数据分区

排序(ORDER BY)

用于对分区内的数据进行排序,用于计算

窗口大小(frame_clause)可以在下main找到

frame_clause是在分区中设定一个计算窗口,设定了窗口大小,分析函数就不是拿整个分区作为范围去计算,而是该计算窗口,该计算窗口是与当前行相关联,计算窗口随着当前行的变化而滑动变化

常用场景:
1.计算从分区的第一行开始,到当前行的累计值
2.定义当前行前N行的数据和当前后N行的数据作为计算窗口,可以计算固定宽度滑动平均值

窗口函数分类

1.聚合窗口函数
聚合函数也支持使用窗口函数的方式
sum()、count()、avg()、min()、max()、group_concat()
其中需要注意的是count()窗口函数不能使用distinct进行去重操作。

2.排名窗口函数
用于对函数进行分组排名
row_number():为分区内的每行数据根据排序规则分配一个序列号,从1开始
rank():计算分区内每行数据根据排序规则的排名值,出现重复排名值,后续排名将会跳跃
dense_rank():计算分区内每行数据根据排序规则的排名值,出现重复排名值,后续排名不会跳跃
percent_rank():计算每行数据的排名值以百分比的形式,出现重复排名值,后续排名会跳跃
CUME_DIST,计算每行数据在其分区内的累积分布,也就是该行数据及其之前的数据的比率;取值范围大于 0 并且小于等于 1。
NTILE,将分区内的数据分为 N 等份,为每行数据计算其所在的位置。

3.取值窗口函数
FIRST_VALUE,返回窗口内第一行的数据。
LAST_VALUE,返回窗口内最后一行的数据。
NTH_VALUE,返回窗口内第 N 行的数据。
LAG,返回分区中当前行之前的第 N 行的数据。
LEAD,返回分区中当前行之后第 N 行的数据

4.窗口函数取数框架限定
相关边界规则说明:

使用方式:
方式1:rows n perceding:表示从当前行到前n行(共n+1行)
方式2:range/rows between 边界规则1 and 边界规则2 其中range表示按照值的范围进行定义框架,rows表示按照行的返回进行定义框架

本文地址:http://ww.kub2b.com/news/15713.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号