美文网首页
窗口函数和行转列

窗口函数和行转列

作者: 神呐_宽恕我把 | 来源:发表于2018-12-27 17:14 被阅读0次

窗口函数语法

<窗口函数> over ( [partition by <列清单>]

order by <排序用列清单>)

partition by 相当于sql中的group by,区别是partition by并不会减少原表中记录的行数,并不具备GROUP BY 子句的汇总功能,group by结果分组之后每组只有一条数据

能够作为窗口函数使用的函数

① 能够作为窗口函数的聚合函数( SUM 、 AVG 、 COUNT 、 MAX 、 MIN )

②  RANK 、 DENSE _ RANK 、 ROW _ NUMBER 等专用窗口函数

RANK 函数

计算排序时,如果存在相同位次的记录,则会跳过之后的位次。

例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、4 位……

DENSE_RANK 函数

同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。

例)有 3 条记录排在第 1 位时:1 位、1 位、1 位、2 位……

ROW_NUMBER 函数

赋予唯一的连续位次。

例)有 3 条记录排在第 1 位时:1 位、2 位、3 位、4 位……

行转列

用union

或者

select user_id,order_value,order_id

from lie_col

lateral view explode(split(order_value,',')) num as order_id

limit 10;

列转行

用case when

CASE WHEN < 求值表达式 > THEN < 表达式 >

WHEN < 求值表达式 > THEN < 表达式 >

WHEN < 求值表达式 > THEN < 表达式 >

...

else<表达式>

END

或者

select user_id,

concat_ws(',',collect_list(order_id)) as order_value

from col_lie

group by user_id

limit 10;

备注:collect_list不去重,collect_set去重。column的数据类型是String

相关文章

  • 窗口函数和行转列

    窗口函数语法 <窗口函数> over ( [partition by <列清单>] order by <排序用列清...

  • SQL Server行转列

    SQL行转列 经典实例 创建表格 SQL行转列 经典实例 创建表格 行转列 结果 参考链接

  • JavaEE,大数据-面试-Sql专题-3-行转列案例汇总

    行转列,笔试中经常出现,主要就是case简单函数和case搜索函数的使用,下面给大家几个案例 案例1 数据 数据效...

  • SQL行列转换

    行转列1.1、case when1.2、内置函数pivot 列转行2.1、unpivot2.2、union实现

  • Oracle 行转列

    行转列,以, 分隔 将行转列语句提取成一个Function

  • sql中列转行unpivot、行转列pivot详细讲解||Mys

    目录:一、sqlserver列转行、行转列详解二、Oracle列转行、行转列详解三、DB2列转行、行转列详解四、M...

  • MySQL 行转列,列传行

    静态行转列 使用case...when....then 进行行转列 使用IF() 进行行转列 (1)SUM() 是...

  • SqlServer 行转列

    1 建表,添加测试数据 表数据如下图: 行转列sql 行转列如下图: 2 建表,添加测试数据 表数据如下: 行转列...

  • Hive 1.2.1 行列转换

    1. 借鉴 Hive_语法_行列转换 2. 开始 行转列 相关函数 CONCAT(string A/col, st...

  • 窗口函数

    一、窗口函数基本概念 Mysql8.0支持窗口函数,也称为分析函数,窗口函数与分组聚合函数类似,但是每一行...

网友评论

      本文标题:窗口函数和行转列

      本文链接:https://www.haomeiwen.com/subject/alcdlqtx.html