大数据真题讲解系列——拼多多数据分析面试题

news/2024/5/19 7:14:43

拼多多数据分析面试题:连续3次为球队得分的球员名单

问题:

两支篮球队进行了激烈的比赛,比分交替上升。比赛结束后,你有一个两队分数的明细表(名称为“分数表”)。表中记录了球队、球员号码、球员姓名、得分分数及得分时间。现在球队要对比赛中表现突出的球员进行奖励。

1-需求:

请你写一个SQL语句,统计出连续3次为球队得分的球员名单。

(1)输入展示:

(2)结果展示:

2-数据支持:

-- 创建分数表,并为列名增加注释

drop table t_score;

CREATE TABLE t_score (

    team_name VARCHAR2(50),

    player_id INT,

    player_name VARCHAR2(50),

    score INT,

    score_time TIMESTAMP

);

COMMENT ON COLUMN t_score.team_name IS '球队名称';

COMMENT ON COLUMN t_score.player_id IS '球员ID';

COMMENT ON COLUMN t_score.player_name IS '球员姓名';

COMMENT ON COLUMN t_score.score IS '得分';

COMMENT ON COLUMN t_score.score_time IS '得分时间';

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 3, TO_TIMESTAMP('2023-12-25 10:00:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 3, TO_TIMESTAMP('2023-12-25 10:15:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 1, TO_TIMESTAMP('2023-12-25 10:30:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 3, '安东尼·戴维斯', 2, TO_TIMESTAMP('2023-12-25 10:32:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 3, TO_TIMESTAMP('2023-12-25 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 3, TO_TIMESTAMP('2023-12-25 11:00:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 2, TO_TIMESTAMP('2023-12-25 11:15:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('洛杉矶湖人队', 23, '勒布朗·詹姆斯', 2, TO_TIMESTAMP('2023-12-25 11:30:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 1, TO_TIMESTAMP('2023-12-25 10:10:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 1, TO_TIMESTAMP('2023-12-25 10:25:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 1, TO_TIMESTAMP('2023-12-25 10:40:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 11, '克莱·汤普森', 2, TO_TIMESTAMP('2023-12-25 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 2, TO_TIMESTAMP('2023-12-25 10:55:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 2, TO_TIMESTAMP('2023-12-25 11:10:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 3, TO_TIMESTAMP('2023-12-25 11:25:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 3, TO_TIMESTAMP('2023-12-25 11:40:00', 'YYYY-MM-DD HH24:MI:SS'));

INSERT INTO t_score VALUES ('金州勇士队', 30, '斯蒂芬·库里', 3, TO_TIMESTAMP('2023-12-25 11:55:00', 'YYYY-MM-DD HH24:MI:SS'));

-- 查询数据

SELECT * FROM t_score;

3-需求实现:

方法一:lead( )方法实现

  1. LAG 函数:与 LEAD 函数相反,用于获取当前行前的指定行的值。
  2. LEAD 函数:与 LEAD 函数相反,用于获取当前行后的指定行的值。
(1)实现原理:

        每行数据向上移动一行并作为新的一行rn1,同理向上移动两行作为新的一行rn2,当移动参数值 = rn1 = rn2时,所取的参数值便为所求。

(2)完整代码:
with t1 as (
selectt_score.*,lead(player_id,1) over (partition by team_name order by score_time) rn1,lead(player_id,2) over (partition by team_name order by score_time) rn2
from t_score)
select distinct player_id,player_name,team_name from t1 where t1.player_id=t1.rn1 and t1.rn1=t1.rn2;

方法二:等差数列方法

        对于第一种方法适合小间距取值,当取值过大时候如100甚至1000行连续值时,这个方法显然不可以使用了,那么此时我们便可以使用等差数列发轻松解决问题

(1)本题方法原理:

1.由于本题目表中并无可以作为参考值的数字序列,那么我们便利用rownum方法生成序号;

2.拥有参考值之后我们便可以进行排序,将每个队与每个队分离。

3.分离完之后我们便可以通过ROW_NUMBER()进行等差数列的生成;

4.生成等差数列后,将等差数列与rownum生成的参考值进行求差计算,并作为新的一列:‘差值’;

5.通过求和窗口函数count(),将差值按照队伍、与队员进行分组 并按照大小进行排序

6.对总和进行过滤,得到所求结果

(2)完整代码:
select distincttb3.player_id,tb3.player_name,tb3.team_name
from(selecttb2.*,count(tb2.差值) over (partition by tb2.team_name,tb2.player_name order by tb2.差值) 总和from(selectp1.rn,p1.player_id,p1.player_name,p1.team_name,p1.rn-p1.等差数列 差值from(with tb1 as (select rownum rn, ts.* from T_SCORE ts)selecttb1.* ,row_number() over (partition by tb1.team_name order by tb1.player_id) 等差数列from tb1)p1)tb2)tb3
where tb3.总和>=3;


http://www.mrgr.cn/p/06056615

相关文章

MySQL中实现支持Emoji表情存储

MySQL中实现支持Emoji表情的存储 要让MySQL支持Emoji,详细步骤: 步骤1:确认MySQL版本 确保您使用的MySQL版本至少为5.5.3,因为这是开始支持utf8mb4字符集的起始版本。如果您当前的版本低于此要求,您需要先升级MySQL到一个支持utf8mb4的较新版本。 步骤2:检查现有表结构 查…

凭证管理揭秘:Cookie-Session 与 JWT 方案的对决

在软件架构中,关于凭证如何存储和传递,一直有两种不同的解决思路,两种不同的解决方式,实际上反映了两种不同的架构思路概述 在上一篇文章我们聊完了授权的过程,在服务器对客户端完成授权之后,服务器会给客户端颁发对应的凭证,客户端持有该凭证访问服务端,服务器便能知道…

RAID软件磁盘阵列

RAID软件磁盘阵列 目录RAID软件磁盘阵列一、RAID概述1、RAID的概念2、RAID 中主要有三个关键概念和技术二、常用RAID介绍1、RAID 0 (条带化存储)— 性能最佳2、RAID 1(镜像存储)— 完整备份3、RAID 5 性能与数据备份的均衡考虑4、RAID 1 + 0(先做镜像,再做条带)5、总结…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音,然后通过扬声器将声音播放出来。当我们打开电视并选择频道时,电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后,就能够通过扬声器发出声音。电视机声音的产生原理和音…

Doris安装使用

1. 整体架构2. 安装部署 2.1 资源规划实例名称 端口名称 默认端口 通信方式 说明FE http_port 8030 -> 8034 用户/FE<--> FE FE上的http端口 web管理界面BE webserver_port 8040 -> 8041 BE<-->FE BE上的http端口 跟hadoop端口号冲突FE query_port 9030 用户…

LVM逻辑卷与磁盘分配

LVM逻辑卷与磁盘分配 目录LVM逻辑卷与磁盘分配一、 LVM逻辑卷1、LVM概述2、LVM机制的概念3、LVM的管理命令4、LVM操作所需的命令4.1 实例4.1.1 初级设置:建立分区4.1.2 创建物理卷4.1.3 建立vg01组4.1.4 建立逻辑卷4.1.5 格式化4.1.6 临时挂载4.1.7 永久挂载4.1.8 扩容分区二、…

e语言 事件转移

demo本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18157553

Arduino UNO数据手册(新手入门)

Arduino UNO数据手册(新手入门)

docker和虚拟机的区别

VPS、ECSVPS:虚拟专用服务器,可以理解为物理机上多个 Vmware/VirtualBox 虚拟机,但传统 VPS 不支持资源升降级,资源是固定的。 ECS:VPS+自主升降级就变成了 ECS。docker 这里我以一个实际中可能遇到的例子讲解,比如我们有两台服务器,我需要在两台服务器上分别安装 vim 软…

k8s 入门

k8s 是什么? k8s 介于应用和服务器之间,能够通过配置协调多个应用服务。使用者通过配置 yaml 文件来将多个服务自动部署应用到各个服务器上,实现服务的自动扩缩容,并且具有高可用性(某台机器上服务宕机后,自动在另外的服务器上部署应用)。 k8s 架构原理 k8s 整体分为控制…

CSS盒子模型与常见问题

CSS盒子模型 显示模式转换显示模式 盒子模型边框线内边距padding 多值写法 尺寸计算与内减法模式外边距 清除默认样式元素溢出外边距问题合并现象塌陷现象 行内元素 – 内外边距问题 显示模式 显示模式&#xff1a;标签&#xff08;元素&#xff09;的显示方式作用&#xff1a;…

基于IIoT的设备预测性维护设计

基于IIoT的设备预测性维护设计 一、引言 在工业物联网&#xff08;IIoT&#xff09;的背景下&#xff0c;设备预测性维护成为了一种关键的战略&#xff0c;能够帮助企业提前发现并解决设备故障&#xff0c;从而提高生产效率、减少停机时间&#xff0c;并降低总体维护成本。为了…

DRV8825步进驱动芯片的电流调节与测量

DRV8825驱动的电流调节与测量DRV8825驱动特点最大电流2.5A。最高支持32细分。芯片内阻更小,发热更低,散热性更好。驱动DRV8825电流调节电流太小雕刻容易丢步,导致雕刻错位、雕刻失败。感觉电机不够力可以把电流调大。电流太大步进电机会发热。这时需要把电流调小。调节方法请…

QT C++ sqlite 对多个数据库的操作

//本文描述&#xff0c;QT 对多数据库的操作。 //你可能会想&#xff0c;多数据库的操作时&#xff0c;查询语句怎么知道是哪个数据库。 //QT提供了这样一种构造函数 QSqlQuery(const QSqlDatabase &db) //指定数据库 //在QT6.2.4 MSVC2019调试通过。 //效果见下图&am…

百篇博客 · 千里之行

时光荏苒流逝&#xff0c;白驹匆匆过隙&#xff0c;不知不觉间&#xff0c;Damon小智已经在CSDN上记录了第一百多篇文章。恰逢128天创作纪念日的此刻&#xff0c;我感慨良多&#xff0c;这百余篇博客不仅是我的创作历程&#xff0c;更见证了我在这五年技术生涯中走过心路历程。…

Vue3 超前版发布,全面拥抱 JSX/TSX

拥抱 JSX/TSX? 我们都知道 Vue 一直主流是使用 template 模板来进行页面的编写。而就在最近,Vue3 的超前项目 Vue Macros 中,发布了 defineRender、setupComponent、setupSFC 这些新的 API,这代表了,以后 Vue3 有可能可以全面拥抱 JSX/TSX 了!! 说这个新 API 之前,我…

AutoGPT-Forge使用教程,自行构建agent智能体

本博客给出AutoGPT-forge四个教程的翻译与理解&#xff0c;使用GPT4翻译&#xff0c; 参考官方教程https://aiedge.medium.com/autogpt-forge-a-comprehensive-guide-to-your-first-steps-a1dfdf46e3b4 使用AutoGPT Github代码日期2024/4/22&#xff1b; 博客开始编辑日期20…

rocketMQ安装教程

文章目录前言 一、rocketMQ安装教程 二、rocketmq-console可视化界面 前言 本章节将介绍如何在docker环境下安装rocketmq以及rocketmq-console可视化界面 一、rocketMQ安装教程 在安装之前请保证您的服务器已经安装好docker环境并且安装好JDK (1)拉取rocketMQ最新版本镜像 do…

浏览器的工作原理

参考&#xff1a;渲染页面&#xff1a;浏览器的工作原理 - Web 性能 | MDN (mozilla.org) Web 性能 | MDN (mozilla.org) Web性能影响因素 首先有两个&#xff0c;一个是网络延迟&#xff0c;一个是大部分情况下浏览器都是单线程执行的 保障页面快速加载的最大威胁是网络延迟…

创建钉钉审批流实例

1、依赖 <!--钉钉 api --> <dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>2.0.14</version> </dependency> <!--钉钉 事件订阅--> <dependency><groupId>co…