SQL窗口函数, 测试题

第一题 

create table user_score
(logday date, -- 考试时间
userid VARCHAR(20),  -- 考试用户
score int);          -- 考试成绩Insert into user_score values
('2019-10-20',11111,85)
,('2019-10-20',22222,83)
,('2019-10-20',33333,86)
,('2019-10-21',11111,87)
,('2019-10-21',22222,65)
,('2019-10-21',33333,98)
,('2019-10-22',11111,67)
,('2019-10-22',22222,34)
,('2019-10-22',33333,88)
,('2019-10-23',11111,99)
,('2019-10-23',22222,33);

 1)使用 over() 函数进行数据统计, 统计每个用户及表中数据的总数(要求相同用户排列在一起)

SELECT 
* ,
count( userid ) over ( PARTITION BY userid ORDER BY userid) AS total 
FROM user_score

2)求用户明细并统计每个用户的平均测试成绩(要求小数点后保留两位)总数

SELECT
   *    ,round(avg( score ) over ( PARTITION BY userid ),2) AS avg_score 
FROM    user_score

3)统计每一个用户的本次考试成绩和他上次的考试成绩(提醒用 first_value或lag函数)

实现方式一(使用lag函数) 

SELECT   logday,userid,score,   lag( score,1 ) over ( partition BY userid order by logday  rows BETWEEN unbounded preceding AND current ROW ) AS pre_score 
FROM   user_score 

 实现方式二(使用first_value函数)

SELECT
   logday,userid,score,  first_value(score) over ( partition BY userid order by logday  
rows BETWEEN 1 preceding AND current ROW ) AS pre_score
FROM   user_score

4) 计算每个用户最大的考试成绩(提醒:使用rank函数)

selectt.logday,t.userid,t.scorefrom(        SELECT                logday,userid,score,rank() over ( partition BY userid order by score desc ) AS sorted                                   FROMuser_score) t where    t.sorted = 1;

第二题 

SELECT c.id, c.name, 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505333.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心 Leetcode 376 摆动序列

摆动序列 Leetcode 376 学习记录自代码随想录 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#…

【数据结构】知识点一:线性表之顺序表

内容导航 一、什么是线性表?二、什么是顺序表?1、顺序表的概念2、顺序表的结构a. 静态顺序表:使用定长数组存储元素。b. 动态顺序表:使用动态开辟的数组存储。 三、顺序表的接口实现精讲1.接口一:打印数据2.接口二&…

算法 -【最小路径和】

最小路径和 题目示例1示例2 分析代码 题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例1 输入:grid [[1,3,1],[1,5,1…

Ethernet/IP转Modbus TCP网关

产品功能 1 YC-EIP-TCP工业级EtherNet/IP 网关 2 Modbus TCP 转 EtherNet/IP 3支持ModBus主从站 4 即插即用 无需编程 轻松组态 ,即实现数据交互 5导轨安装 支持提供EDS文件 6 EtherNET/IP与ModBus互转数据透明传输可接入PLC组态 支持CodeSys/支持欧姆龙PLC 支持罗克韦尔(AB) 典…

FastAPI 的 quickstart

从这一章往后我们就正式开始学习 FastAPI 了 代码 FastAPI 环境安装 python 环境安装 根据要求至少需要 python 3.8及其以上,可以去 python 官网 自行下载安装, 本文中我们用 python 3.11 FastAPI 环境安装 pip install fastapi pip install "uvicorn[sta…

基于springboot+vue的高校办公室行政事务管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

“2024年是原生鸿蒙的关键一年,我们要加快推进各类鸿蒙原生应用的开发,集中打赢技术底座和三方生态两大最艰巨的战斗。”这是余承东在新年信中表达的决心。 随后在1月18日举行的鸿蒙生态千帆启航仪式上,华为宣布 HarmonyOS NEXT 鸿蒙星河版系…

Linux内存地址空间

目录 一、虚拟地址空间 1.虚拟地址空间的定义 2.虚拟地址空间的布局 二、内存壁垒 1.内存壁垒的定义​编辑 2.段错误 三、内存映射的建立与解除 (1)mmap (2)munmap (3)堆内存的分配和释放 1.sbrk …

springboot238光影视频

光影视频平台 摘 要 使用旧方法对光影视频平台的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在光影视频平台的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开…

如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?

原文链接:如何用ChatGPTGEEENVIPython进行高光谱,多光谱成像遥感数据处理? 第一:遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二:ChatGPT ChatGPT可以做什么? ChatGPT演示使用 …

美梦从舒适开始,康姿百德床垫为睡眠健康护航

在当今社会,高质量的睡眠已成为人们对生活品质的追求,对床垫的选择也变得越来越讲究。在我们繁忙的生活中,一张优质的床垫不仅是我们舒适休息的保障,更是保持健康生活方式的重要部分。康姿百德床垫,作为市场上的佼佼者…

BEVFusion

1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准,当前的方法依赖于激光雷达传感器的点云作为查询,以利用图像空间的特征。然而,人们发现,这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…