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函数)

select
    t.logday,t.userid,t.score
 from(        
        SELECT                
                logday,userid,score,
                rank() over ( partition BY userid order by score desc ) AS sorted                                   
        FROM
                user_score
        ) t 
        where    
            t.sorted = 1;

第二题 

SELECT 
 c.id, 
 c.name, 
  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯(3.2)

1209. 带分数 import java.io.*;public class Main {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));static final int N 10;static int n, cnt;static int[…

Pytorch学习 day02(加载数据、数据集类)

加载数据 * Dataset提供一种方式:来获取数据及其label,给数据进行编号 * Dataloader为神经网络提供不同的数据形式 Dataset的组织形式有很多种,例如: 将label放在文件夹名上,如下: #Dateset # --train #…

10分钟帮您快速理解InfluxDB中的核心概念

InfluxDB是目前时序数据库 (TSDB)最优秀的产品,时序数据库是一种设计和优化的数据库,用于注册和存储始终与特定时间点相关联或使用时间戳的数据。时序数据其实就是在不同时间点收集并按时间排序的数据。对于刚刚接触时序数据库的同学来说,好多…

Matlab偏微分方程拟合 | 源码分享 | 视频教程

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例完整源码;2.…

利用css实现常见图形

1、正圆形 给正方形盒子设置圆角属性为宽高的50%。 div {width: 100px;height: 100px;background-color: plum;border-radius: 50%; } 2、胶囊形 给长方形盒子设置圆角属性为盒子高度的50%。 div {width: 200px;height: 100px;background-color: plum;border-radius: 50px…

一个最简单的Three.js的井筒三维云图渲染示例

在Three.js中实现井筒的三维云图渲染,需要先准备井筒的属性数据,例如井筒的几何结构、温度分布、压力分布等。然后,利用Three.js创建对应的三维模型并将属性数据应用到模型上,最终呈现出井筒的三维云图效果。下面是一个简单的示例…

(四)优化函数,学习速率与反向传播算法--九五小庞

多层感知器 梯度下降算法 梯度的输出向量表明了在每个位置损失函数增长最快的方向,可将它视为表示了在函数的每个位置向那个方向移动函数值可以增长。 曲线对应于损失函数。点表示权值的当前值,即现在所在的位置。梯度用箭头表示,表明为了增…

Kubernetes/k8s的核心概念

一、什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”&#xff…

3分钟,学会一个测试员必懂 Lambda 小知识!

今天再来给大家介绍下函数式接口和方法引用。 函数式接口 问:Lambda 表达式的类型是什么? 答:函数式接口 问:函数式接口是什么? 答:只包含一个抽象方法的接口,称为函数式接口 (…

关于synchronized介绍

synchronized的特性 1. 乐观锁/悲观锁自适应,开始时是乐观锁,如果锁冲突频繁,就转换为悲观锁 2.轻量级/重量级锁自适应 开始是轻量级锁实现,如果锁被持有的时间较长,就转换成重量级锁 3.自旋/挂起等待锁自适应 4.不是读写锁 5.非公平锁 6,可重入锁 synchronized的使用 1&#…

如何使用 CrewAI 构建协作型 AI Agents

一、前言 AI Agents 的开发是当前软件创新领域的热点。随着大语言模型 (LLM) 的不断进步,预计 AI 智能体与现有软件系统的融合将出现爆发式增长。借助 AI 智能体,我们可以通过一些简单的语音或手势命令,就能完成以往需要手动操作应用程序才能…

【YOLO v5 v7 v8 小目标改进】RFB:组合不同大小的卷积核和扩张卷积来模拟人类视觉感受野的多尺度特性

RFB:组合不同大小的卷积核和扩张卷积来模拟人类视觉感受野的多尺度特性 提出背景RFB 原理空间感受野结构RFB-Net 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 提出背景 当前表现最好的目标检测器依赖于深层CNN骨干网络,如ResNet-101和Inception&am…

Vue3 条件渲染 v-show

v-show 指令&#xff1a;用于控制元素的显示或隐藏。 执行条件&#xff1a;当条件为 false 时&#xff0c;会添加一个 display:none 属性将元素隐藏。 应用场景&#xff1a;适用于显示隐藏切换频率较高的场景。 <div v-show"数据">内容</div> 基础用法…

LeetCode 热题 100 | 图论(一)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…

langchain学习笔记(七)

RunnablePassthrough: Passing data through | &#x1f99c;️&#x1f517; Langchain 1、RunnablePassthrough可以在不改变或添加额外键的情况下传递输入。通常和RunnableParallel结合使用去分配数值给到字典的新键 两种方式调用RunnablePassthrough &#xff08;1&#…

MySQL进阶:全局锁、表级锁、行级锁总结

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;MySQL事务、并发事务问题及隔离级别 &#x1f4da;订阅专栏&#xff1a;MySQL进阶 希望文章对你们有所帮助…

Linux学习笔记:进程的终止和等待

进程终止和等待 进程终止进程退出场景进程常见退出方式_exit()退出exit()退出return退出exit()与_exit()的不同之处 进程的等待什么是进程等待?为什么要进行进程等待如何进行等待wait方式:waitpid方式 进程终止 进程退出场景 一般来讲,进程的退出场景有三种: 代码运行完毕,…

Unity RectTransform·屏幕坐标转换

RectTransform转屏幕坐标 分两种情况 Canvas渲染模式为Overlay时&#xff0c;使用此方式 public Rect GetScreenCoordinatesOfCorners(RectTransform rt) {var worldCorners new Vector3[4];rt.GetWorldCorners(worldCorners);var result new Rect(worldCorners[0].x,world…

LeetCode54题:螺旋矩阵(python3)

路径的长度即为矩阵中的元素数量&#xff0c;当路径的长度达到矩阵中的元素数量时即为完整路径&#xff0c;将该路径返回。 循环打印&#xff1a; “从左向右、从上向下、从右向左、从下向上” 四个方向循环打印。 class Solution:def spiralOrder(self, matrix: List[List[i…

我的秋招数据分析岗面经分享(京东,美团,阿里,拼多多,vivo,滴滴)

节前&#xff0c;我们社群组织了一场技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对新手如何入门数据分析、机器学习算法、该如何备战面试、面试常考点分享等热门话题进行了深入的讨论。 基于社群的讨论&#xff0c;今天…