IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL 题解记录 1-10 -> 正文阅读

[大数据]SQL 题解记录 1-10


写在前面:
????记录一下解 sql 题的心路历程,题目来自牛客网 sql 专栏,按通过率由高到低刷起,题解来自评论区提供的思路,每 10 道题记录一篇博客,有问题的地方欢迎讨论。

一、分页查询employees表,每5行一页,返回第2页的数据——limit语句

原题目地址:分页查询employees表,每5行一页,返回第2页的数据

????语句 limit,第一个参数为开始记录数(从0开始),第二个参数是记录的条数,此题实际上是从第5条到第9条。

SELECT * FROM employees
limit 5,5;

二、 将titles_test表名修改为titles_2017——rename语句

原题目地址:将titles_test表名修改为titles_2017
???? 修改表名,属于DDL操作,使用 rename to 语句即可:

alter table titles_test rename to titles_2017;

三、最差是第几名(一)——开窗函数

原题目地址:最差是第几名(一)

????这道题我一开始想到的思路是按 grade 排序,然后当前成绩最差的名次数应该等于上一档次的最差名次+当前成绩人数,但是想不来怎么获得上一档次的最差名次(有点递归那意思😂,而且毕竟这是 sql,没有数组的存储方式),参考了下评论,主要是通过开窗函数
????开窗函数格式: 函数名 (列) OVER (选项),OVER 关键字表示把函数当成开窗函数而不是聚合函数。SQL 标准允许将所有聚合函数用做开窗函数,使用 OVER 关键字来区分这两种用法。
比如:

sum (number) over
(order by grade range
 between unbounded preceding and current row);

????这里的开窗函数sum (number) over (order by grade range between unbounded preceding and current row) 表示按照 grade 进行排序,然后计算从第一行(UNBOUNDED PRECEDING)到当前行(CURRENT ROW)的和,还可以写作:sum (number) over (order by grade rows between unbounded preceding and current row) (也就是把 range 换成了 rows,前者是比较常见的定位框架)这样的计算结果就是按照 grade 进行排序的人数值的累积和。同理,如果是想要求 当前行前 2 行,到当前行后 2 行的累加和,可以写成:(order by grade rows between 2 preceding and 2 following)
????回到这道题,可以写成简化版的累加:

sum (number) over (order by grade);

????也表示从第一行累加到当前行。
????整个的 sql 语句为:

select grade,sum(number) over(order by grade) as t_rank
from class_grade
order by grade;

????关于开窗函数,比较详细的介绍可以参考这篇文章:https://www.cnblogs.com/lihaoyang/p/6756956.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:25:14  更:2022-05-05 11:29:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:16:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码