一 ,开窗函数 :

1 ,共几行 :

  1. sql :
val sql = "select sid,sname,count(1) over() cnt from student"
val df: DataFrame = spark.sql(sql)
df.show(100)
  1. 结果 :
+---+------+---+
|sid| sname|cnt|
+---+------+---+
|  1|孙福龙|  8|
|  2|王婷婷|  8|
|  3|王丹丹|  8|
|  4|孙尚文|  8|
|  5|孙静雅|  8|
|  6|王珞丹|  8|
|  7|  张三|  8|
|  8|  李四|  8|
+---+------+---+

2 ,分数表 : 二次排序 ( 科目,分数 )

  1. sql :
select cid,sid,score
from score
order by cid asc,score desc
  1. 结果 :
+---+---+-----+
|cid|sid|score|
+---+---+-----+
|  1|  3|   91|
|  1|  2|   79|
|  1|  7|   66|
|  1|  1|   56|
|  1|  8|   49|
|  1|  5|   46|
|  1|  6|   35|
|  2|  4|   88|
|  2|  7|   88|
|  2|  2|   81|
|  2|  1|   78|
|  2|  6|   68|
|  2|  3|   47|
|  2|  8|   11|
|  3|  2|   92|
|  3|  4|   90|
|  3|  3|   88|
|  3|  5|   78|
|  3|  7|   77|
|  3|  1|   67|
|  3|  8|   22|
|  4|  7|   98|
|  4|  4|   93|
|  4|  6|   71|
|  4|  2|   68|
|  4|  1|   58|
|  4|  3|   56|
|  4|  5|   53|
|  4|  8|   38|
+---+---+-----+

3 ,分组,排序 :

  1. sql :
val sql = "select row_number() over(partition by cid order by score desc) res,cid,sid,score from score"
val df: DataFrame = spark.sql(sql)
df.show(100)
  1. 结果 :
+---+---+---+-----+
|res|cid|sid|score|
+---+---+---+-----+
|  1|  1|  3|   91|
|  2|  1|  2|   79|
|  3|  1|  7|   66|
|  4|  1|  1|   56|
|  5|  1|  8|   49|
|  6|  1|  5|   46|
|  7|  1|  6|   35|
|  1|  3|  2|   92|
|  2|  3|  4|   90|
|  3|  3|  3|   88|
|  4|  3|  5|   78|
|  5|  3|  7|   77|
|  6|  3|  1|   67|
|  7|  3|  8|   22|
|  1|  4|  7|   98|
|  2|  4|  4|   93|
|  3|  4|  6|   71|
|  4|  4|  2|   68|
|  5|  4|  1|   58|
|  6|  4|  3|   56|
|  7|  4|  5|   53|
|  8|  4|  8|   38|
|  1|  2|  4|   88|
|  2|  2|  7|   88|
|  3|  2|  2|   81|
|  4|  2|  1|   78|
|  5|  2|  6|   68|
|  6|  2|  3|   47|
|  7|  2|  8|   11|
+---+---+---+-----+

4 ,top3 :

  1. sql :
val sql = "select * from (select row_number() over(partition by cid order by score desc) num,cid,sid,score from score) res where res.num<=3"
val df: DataFrame = spark.sql(sql)
df.show(100)
  1. 结果 :
+---+---+---+-----+
|num|cid|sid|score|
+---+---+---+-----+
|  1|  1|  3|   91|
|  2|  1|  2|   79|
|  3|  1|  7|   66|
|  1|  3|  2|   92|
|  2|  3|  4|   90|
|  3|  3|  3|   88|
|  1|  4|  7|   98|
|  2|  4|  4|   93|
|  3|  4|  6|   71|
|  1|  2|  4|   88|
|  2|  2|  7|   88|
|  3|  2|  2|   81|
+---+---+---+-----+

二 ,日期函数 :

1 ,将字符串转为日期类型 :

  1. 思路 : String - java.util.Date - long - java.sql.Date - 日期类型
  2. 核心代码 :
new Date(format.parse(arr(3)).getTime)
StructField("tbirth", DateType, true),
  1. 全部代码 :
val rddRowTeacher: RDD[Row] = rddTeacher.map(line => {valarr: Array[String] = line.split("\t")Row(arr(0).toInt, arr(1), arr(2), new Date(format.parse(arr(3)).getTime), arr(4), arr(5))
})
val fieldsTeacher: Array[StructField] = Array(StructField("tid", IntegerType, true),StructField("tname", StringType, true),StructField("tsex", StringType, true),StructField("tbirth", DateType, true),StructField("tlevel", StringType, true),StructField("tdepart", StringType, true)
)

2 ,直接查询日期类型 :

  1. sql
val sql ="select sbirth from student where sid=1"
  1. 结果 :
+----------+
|    sbirth|
+----------+
|1989-03-09|
+----------+

16 ,spark sql : 开窗函数 ,top3相关推荐

  1. Spark SQL 开窗函数row_number的使用

    Spark SQL 开窗函数row_number的使用 窗口函数 row_number即为分组取topN 参考文本:                   型号                      ...

  2. mysql开窗函数_魔幻的SQL开窗函数,为您打开进阶高手的一扇天窗

    经常写SQL脚本的朋友,通常会有一种迷之自信,似乎各种问题都有自己的一套解决方案.时间长了,人的思维可能会逐渐固化.思维固化能提高工作效率,但从某些角度看是很可怕的,我们也同时会失去接受新知识的内在动 ...

  3. spark SQL自定义函数:

    spark SQL 自定义函数: 自定义函数: 第一种:  U D F  (用户自定义函数)函数 特点:  一对一的关系,输入一个值以后输出一个值  (一进一出) 大部分的内置函数都是U D F函数 ...

  4. SQL开窗函数之前后函数(LEAD、LAG)

    开窗函数 当我们需要进行一些比较复杂的子查询时,聚合函数就会非常的麻烦,因此可以使用开窗函数进行分组再运用函数查询.窗口函数既可以显示聚集前的数据,也可以显示聚集后的数据,可以在同一行中返回基础行的列 ...

  5. Hive SQL开窗函数详解

    Hive 开窗函数 group by 是分组函数,一组出来一个数据 over() 开窗,针对每一条数据,都有一个独立的组 mk 3 jk 3 mk 3 select orderdate,cost,su ...

  6. SQL开窗函数(窗口函数)详解

    一.什么是开窗函数 开窗函数/分析函数:over() 开窗函数也叫分析函数,有两类:一类是聚合开窗函数,一类是排序开窗函数. 开窗函数的调用格式为: 函数名(列名) OVER(partition by ...

  7. SQL 开窗函数使用

    好多次笔试面试的题都考到开窗函数,若对开窗函数不了解,真的吃了好大的亏,今天花点时间整理一下. 此文章整理的知识点部分来自:https://www.cnblogs.com/lihaoyang/p/67 ...

  8. Spark SQL自定义函数_第五章

    1.自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 1.UDF(User-Defined-Function) 输 ...

  9. Spark SQL自定义函数

    文章目录 自定义函数分类 自定义UDF 自定义UDAF[了解] 自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 ...

  10. spark sql substr函数

    开发中,经常进行模糊查询或者进行截取字符串进行模糊匹配,常用的就是substr函数或者substring函数. 使用语法: substr(string A, int start),substring( ...

最新文章

  1. Android:项目关联Library
  2. 华山论剑之浅谈iOS的生产线 工厂模式
  3. 面试官:给我说一下 Spring MVC 拦截器的原理?
  4. Access2007及以后的版本中的数据库连接字符串
  5. hosts文件与resolv.conf文件
  6. 节假日api_iOS能跳过节假日的晚安闹钟捷径
  7. python数学计算_初学者Python学习笔记--数学计算
  8. crash recovery mysql_InnoDB crash recovery 完整过程
  9. GHOSTXP_SP3电脑公司快速安装机版V2013
  10. php 双向队列,PHP实现一个双向队列
  11. 矩池云上使用nvidia-smi命令教程
  12. 数据集 —— ground truth 数据集
  13. 冰原服务器维护,12月2日服务器公告 冰原旅途进发
  14. Learning a Discriminative Feature Network for Semantic Segmentation(语义分割DFN,区别特征网络)...
  15. 机械--NX2007(UG)有限元分析教程1--简单物体
  16. 7天连锁酒店郑南雁:顺势创业者无为管理人
  17. html动态和静态的区别,静态测试和动态测试的区别是什么
  18. 贱人工具箱使用技巧系列1——旋转复制
  19. Hyper-V安装lede软路由历程及注意事项
  20. (word、ppt、excel)​office怎么删除历史文档记录

热门文章

  1. Macbook Pro A1708更换磁盘
  2. 硬盘格式转换(MBR/GPT)
  3. rest风格使用两个变量_REST风格
  4. 44. DDR2内存初始化代码分析-7
  5. Unit 3, Playback Buffer
  6. 戴尔游匣5577安装Ubuntu18.04配置
  7. 期权的隐含波动率—python方法求解
  8. 最后一位被整除 oracle,【CTF WriteUp】2020第四届强网杯部分Crypto题解
  9. ESP32 / ESP8266 RGB LED灯带配颜色选择器Web服务器
  10. Cent0S7系统镜像文件(百度网盘资源)