做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

news2024/10/7 7:23:24

----查询每天刷题通过数最多的前二名用户id和刷题数
现有牛客刷题表questions_pass_record,请查询每天刷题通过数最多的前二名用户id和刷题数,输出按照日期升序排序,查询返回结果名称和顺序为:
date|user_id|pass_count

表单创建和数据的插入:

drop table if exists questions_pass_record;
CREATE TABLE questions_pass_record
(
    user_id       int         NOT NULL,
    question_type varchar(32) NOT NULL,
    device        varchar(14) NOT NULL,
    pass_count    int         NOT NULL,
    date          date        NOT NULL
);
INSERT INTO questions_pass_record
VALUES (101, 'java', 'app', 2, '2020-03-01');
INSERT INTO questions_pass_record
VALUES (102, 'sql', 'pc', 15, '2020-03-01');
INSERT INTO questions_pass_record
VALUES (102, 'python', 'pc', 9, '2021-04-09');
INSERT INTO questions_pass_record
VALUES (202, 'python', 'pc', 11, '2021-04-09');
INSERT INTO questions_pass_record
VALUES (104, 'python', 'app', 3, '2021-04-09');
INSERT INTO questions_pass_record
VALUES (105, 'sql', 'pc', 60, '2018-08-15');
INSERT INTO questions_pass_record
VALUES (104, 'sql', 'pc', 20, '2018-08-15');
INSERT INTO questions_pass_record
VALUES (304, 'sql', 'pc', 10, '2018-08-15');

查询语句:

 select  user_id,pass_count
 from (
		 select date,user_id,pass_count,
				dense_rank( )over(PARTITION BY user_id ORDER BY date ) as rank_num
		 from questions_pass_record
		 group by date,user_id,pass_count
		) t
 where rank_num in (1,2)

在查询中:
DENSE_RANK( ) 函数用于在每个分组内按照指定的排序方式为行分配一个排名值,排名值可以重复,并且不存在断开的排名。通过使用 DENSE_RANK( ) 函数,可以方便地为每个分组内的行分配排名值,用于处理需要对数据进行排名和分组的情况。

语法:

DENSE_RANK() OVER (PARTITION BY column1 ORDER BY column2)

PARTITION BY 指定了分组的列,ORDER BY 指定了排序的列。

dense_rank( )over(PARTITION BY user_id ORDER BY date ) as rank_num

使用 DENSE_RANK( ) 函数为每个分组内的行分配一个排名值,分组依据是 user_id 列,排序依据是 date 列,将排名值命名为 rank_num。

需要注意
RANK( )DENSE_RANK( )ROW_NUMBER( ) 函数是用于计算和分配行排序值的窗口函数。它们在使用 OVER 子句时可以根据指定的排序规则为结果集中的行分配排名、稠密排名或行号。
RANK( ) 函数:
RANK( ) 函数为结果集中的行分配排名值,并且具有相同值的行将具有相同的排名值,随后的排名值将会跳过相同的排名并递增

示例,查询学生成绩排名:

select *,rank() over (order by Score desc) as rank_over
from Stu_Scores

执行结果:
在这里插入图片描述

DENSE_RANK( ) 函数:
DENSE_RANK( ) 函数为结果集中的行分配稠密排名值,具有相同值的行将具有相同的排名值,但排名值不会跳过
示例,查询学生成绩排名:

select *,dense_rank() over (order by Score desc) as dense_rank_over
from Stu_Scores

执行结果:
在这里插入图片描述

ROW_NUMBER( ) 函数:
ROW_NUMBER( ) 函数为结果集中的行分配唯一的行号,每行的行号都是唯一的。
示例,查询学生成绩排名:

select *,row_number() over (order by Score desc) as row_number_over
from Stu_Scores

执行结果:
在这里插入图片描述
可根据实际需求选择需要使用的函数。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双指针的运用——双数之和II和三数之和

两数之和 https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/ 我们考虑这个排序过的数组,首先一个指针在最左,一个在最右。如果这两个数字比目标数字来的要小,那么如果我们左边指针移动了,移动后一定变…

高通平台开发系列讲解(USB篇)linux下如何让U盘可以识别问题

文章目录 一、简述二、修改方法三、宏介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 一、简述 对于一些U盘不能自动被Linux内核识别的情况,可能需要进行一些调整和修改内核驱动的设置。 二、修改方法 在kernel中开启以下的宏开关 CONFIG_USB_STORAGE=y CONFIG_SCSI=…

uniapp原生插件之安卓app添加到其他应用打开原生插件

插件介绍 安卓app添加到其他应用打开原生插件,接收分享的文本和文件,支持获取和清空剪切板内容 插件地址 安卓app添加到其他应用打开原生插件,支持获取剪切板内容 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 详细使用文档 u…

第三届《我们的世界》---2023 国际当代艺术展在广州沙面隆重启幕

开幕快讯 2023年12月10日下午,由法国表现主义画院与东方荟萃艺术学院 联合主办的,由法中艺术交流协会、香港博物馆世界、让米歇尔艺术空 间共同协办,法国驻广州总领事馆支持的第三届《我们的世界》---2023 国际当代艺术展在广州沙面隆重启幕! 嘉宾签到现场 本次展览集合了30位活…

50.0/表格(详细版)

目录 50.1 建立表格 50.2 表格边框 50.3 设置表格或单元格的宽度和高度 50.4 表格的背景设置 50.5 表格边框颜色的设置 50.6 表格的位置 50.6.1 水平位置 50.6.2 垂直位置 50.7 为表格添加表头和标题 50.8 单元格的合并 50.8.1 跨行 50.8.2 跨列 50.9 综合示例 通…

Android---Kotlin 学习005

substring 字符串截取。相加与 java,kt 里面的 substring 函数支持 IntRange 类型(表示一个整数范围的类型)的参数,until 创建的范围不包括上限值。 const val NAME "Jimmys friend" fun main(){val index NAME.ind…

python 安装对应版本的lxml

安装对应版本的lxml 先把对应版本的lxml文件下载下来,接着在文件夹路径输入cmd回车,用下面命令安装。

《洛谷深入浅出进阶篇》 进阶数论

本文章内容比较长,请耐心食用!!!!! 目录: 模意义下的数和运算喵~ 模意义下的乘法逆元喵~ 同余方程与中国剩余定理喵~ 线性筛与积性函数喵~ 欧拉函数喵~ 一,模意义下的数和运算。…

Android : Room 数据库的基本用法 —简单应用_一_入门

1.Room介绍: Android Room 是 Android 官方提供的一个持久性库,用于在 Android 应用程序中管理数据库。它提供了一个简单的 API 层,使得使用 SQLite 数据库变得更加容易和方便。 以下是 Android Room 的主要特点: 对象关系映射…

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求, 2.从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…

SpringBoot 实现动态切换数据源

最近在做业务需求时,需要从不同的数据库中获取数据然后写入到当前数据库中,因此涉及到切换数据源问题。本来想着使用Mybatis-plus中提供的动态数据源SpringBoot的starter:dynamic-datasource-spring-boot-starter来实现。 结果引入后发现由于…

2024测试开发面试题完整版本(附答案)

目录 1. 什么是软件测试, 谈谈你对软件测试的了解 2. 我看你简历上有写了解常见的开发模型和测试模型, 那你跟我讲一下敏捷模型 3. 我看你简历上还写了挺多开发技能的, 那你给我讲讲哈希表的实现流程 4. 谈一谈什么是线程安全问题, 如何解决 5. 既然你选择走测…

云计算与大数据技术应用知识及案列

云计算与大数据技术应用知识及案列 简述什么是云计算? 答:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;云计算是一种无处不在的、便捷的通过互联网访问一个可定制的IT资源(IT资源包括网络、服…

C++STL的stack和queue(超详解)

文章目录 前言stack栈的题目最小栈JZ31 栈的压入、弹出序列 stack的模拟实现queue的模拟实现 前言 栈和队列这一块其实有数据结构的基础,学起来非常简单。 stack 栈的成员函数就这么写,除了emplace其他都已经非常熟悉了。 stack没有迭代器吗&#xff…

芝麻杂草目标检测数据集VOC+YOLO格式近1300张

芝麻,芝麻科芝麻属的一年生草本植物,茎中空或具白色髓部;叶子为卵形;花朵单生或少数同生于腋下,呈白色;芝麻蒴果基部钝圆,顶部有尖,中间有棱;芝麻的种子通常呈扁平椭圆形…

MIT6.5840-2023-Lab2C: Raft-Persistence

前置知识 见上一篇 Lab2A。 实验内容 实现 RAFT,分为四个 part:leader election、log、persistence、log compaction。 实验环境 OS:WSL-Ubuntu-18.04 golang:go1.17.6 linux/amd64 Part 2C: persistence 大部分的bug都与这…

Go EASY游戏框架 之 RPC Guide 03

1 Overview easy解决服务端通信问题,同样使用了RPC技术。easy使用的ETCDGRPC,直接将它们打包组合在了一起。随着服务发现的成熟,稳定,简单,若是不用,甚至你也并不需要RPC来分解你的架构。 GRPC 有默认res…

产品入门第三讲:Axure产品流程图绘制

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​​​​ 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还…

电子学会C/C++编程等级考试2022年12月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:655…

排序算法---希尔排序

1. 基本思想 希尔排序是插入排序的一种,它与直接插入排序不同的是,它会优先比较距离较远的元素,因此希尔排序又被称为“缩小增量排序”。希尔排序的实现思路是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序&…