mysql-sql-练习题-2-窗口函数

窗口函数

  • 访问量max sum
    • 建表
    • 窗口函数
    • 连接
  • 直播间人数 第1、3名
    • 建表
    • 排名+sum

访问量max sum

每个用户截止到每月为止,最大单月访问次数,累计到该月的总访问次数
在这里插入图片描述

建表

create table visit(
	uid1 varchar(5) comment '用户id',
	month1 varchar(10) comment '月份',
	visit integer comment '访问量'
) comment '用户每月访问量';

insert into visit
values
  ('A','2000-01',33),
  ('A','2000-02',10),
  ('A','2000-03',38),
  ('B','2000-01',30),
  ('B','2000-02',15),
  ('B','2000-03',44);

窗口函数

select
  *,
  max(visit) over(partition by uid1 order by month1) visit_max, -- 加字段 窗口函数
  sum(visit) over(partition by uid1 order by month1) visit_sum -- 分组 1-当前行
from visit;

select
  *,
  max(visit) over w visit_max,
  sum(visit) over w visit_sum
from visit -- 替代重复部分
window w as (partition by uid1 order by month1);

在这里插入图片描述

连接

select
  *,
  (select max(visit) -- 加字段 输出max
  from visit b
  where a.uid1 = b.uid1 and a.month1 >= b.month1) visit_max, -- 连接 聚合
  (select sum(visit)
  from visit b
  where a.uid1 = b.uid1 and a.month1 >= b.month1) visit_sum
from visit a;

直播间人数 第1、3名

在这里插入图片描述

建表

create table room(
	live_id varchar(5) comment '直播间id',
	user_id varchar(3) comment '用户id',
	date_stamp varchar(17) comment '时间戳',
	entry_type varchar(6) comment '进入直播间状态:enter登陆 out退出'
) comment '直播间 人数峰值';

insert into room
values
  ('1','1','20220101 10:00:00','enter'),
  ('1','2','20220101 10:00:00','enter'),
  ('1','3','20220101 10:00:00','enter'),
  ('1','1','20220101 10:01:00','out'),
  ('1','4','20220101 10:01:01','enter'),
  ('1','5','20220101 10:05:00','enter'),
  ('1','6','20220101 10:05:50','enter'),
  ('1','2','20220101 10:06:00','out'),
  ('1','7','20220101 10:07:40','enter'),
  ('1','3','20220101 10:09:00','out'),
  ('2','12','20220101 10:00:00','enter'),
  ('2','11','20220101 10:00:00','enter'),
  ('2','11','20220101 10:01:00','out'),
  ('2','14','20220101 10:01:01','enter'),
  ('2','15','20220101 10:05:00','enter'),
  ('2','16','20220101 10:05:50','enter'),
  ('2','12','20220101 10:06:00','out'),
  ('2','17','20220101 10:07:40','enter'),
  ('2','18','20220101 10:07:50','out'),
  ('2','19','20220101 10:08:01','enter'),
  ('2','13','20220101 10:09:00','out');

排名+sum

with tmp as(-- 3. if替换 为了sum
  select
    *,
    if(entry_type = 'enter',1,-1) entry_if
  from room
),
  tmp1 as(-- 2. 每个时刻人数
    select
      *,
      sum(entry_if) over(partition by live_id order by date_stamp) count_entry -- 分组 1-当前行
    from tmp
  ),
  tmp2 as(-- 1. 最值 排名
    select
      *,
      dense_rank() over(partition by live_id order by count_entry desc) dr 
    from tmp1
  )
select *
from tmp2
where dr in (1,3);

在这里插入图片描述

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

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

相关文章

【热门话题】Chrome 插件研发详解:从入门到实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Chrome 插件研发详解:从入门到实践一、引言二、Chrome 插件基础概念…

Win32 API 光标隐藏定位和键盘读取等常用函数

Win32 API 光标隐藏定位和键盘读取等常用函数 一、Win32 API二、控制台程序指令modetitlepausecls 三、控制台屏幕上坐标的结构体COORD四、句柄获取函数GetStdHandle五、控制台光标操作1.控制台光标信息结构体CONSOLE_CURSOR_INFO2.得到光标信息函数GetConsoleCursorInfo3. 设置…

Amazon云计算AWS之[5]关系数据库服务RDS

文章目录 RDS的基本原理主从备份和下读写分离 RDS的使用 RDS的基本原理 Amazon RDS(Amazon Relational Database Service) 将MySQL数据库移植到集群中,在一定的范围内解决了关系数据库的可扩展性问题。 MySQL集群方式采用Share-Nothing架构。每台数据库服务器都是…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解 来,思考片刻,给出你的答案 1,使用场景 实现:基于数组实现的有界阻塞队列&…

TCP/IP协议族中的TCP(二):解析其关键特性与机制

⭐小白苦学IT的博客主页⭐ ⭐初学者必看:Linux操作系统入门⭐ ⭐代码仓库:Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 滑动窗口 在前面我们讨论了确认应答策略, 对每一个发送的数据段, 都要给一个ACK确认应答. 收到ACK后再发送下一个数据段.这样…

【Python】#5 基础文件IO详解

文章目录 一、文件概述二、文件操作1.文件的打开与关闭2. 文件的读写2.1 读取2.2 写入tips:CSV与JSON文件 一些文件操作小实验《清明》文本写入与读取《红楼梦》人物出现统计(部分文本) 一、文件概述 文件是数据的集合和抽象,类似&#xff0…

如何增强交友、婚恋平台、金融等平台的安全性

运营商二要素核验是一种数字身份验证方法,主要使用用户的手机号码和姓名作为核验要素。这两个要素被认为是最基本的用户身份信息,通过运营商的数据库来核实其真实性。 在实际操作中,用户需要提供手机号码和姓名进行验证。应用系统会调用接口…

全面了解俄罗斯的VK开户和Yandex投放及内容运营

俄罗斯的VKontakte(简称VK)和Yandex是两个重要的在线平台,对于希望在俄罗斯市场进行推广的企业来说,了解如何在这些平台上开户和投放广告以及内容运营是非常关键的。 俄罗斯vk广告如何开户? 通过上海上弦进行俄罗斯V…

手写一个RNN前向传播以及反向传播

前向传播 根据公式 st tanh (Uxt Wst-1 ba) ot softmax(Vst by ) m 3 词的个数 n 5 import numpy as np import tensorflow as tf # 单个cell 的前向传播过程 # 两个输入,x_t,s_prev,parameters def rnn_cell_forward(x_t,s_prev,parameter…

每日OJ题_DFS回溯剪枝⑧_力扣494. 目标和

目录 力扣494. 目标和 解析代码(path设置成全局) 解析代码(path设置全局) 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联…

SpringBoot + Vue实现Github第三方登录

前言:毕业设计终于好了,希望能有空多写几篇 1. 获取Github账号的Client ID和Client secrets 首先点击这个链接进入Github的OAuth Apps页面,页面展示如下: 之后我们可以创建一个新的apps: 填写资料: 创建之后就可以获…

WebGIS面试题(第六期)-GeoServer

WebGIS面试题(第六期) 以下题目仅为部分题目,全部题目在公众号 {GISer世界} ,答案仅供参考!!! 因为本人之前做过相关项目用到了GeoServer,因此在简历上写了熟悉GeoServer。所以在相关面试中都有问到,所以我…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http板块) 一、思路图二、Util板块1、Splite板块(分词)(1)代码(2)测试及测试结果i、第一种测试ii、第二种…

[论文阅读] 3D感知相关论文简单摘要

Adaptive Fusion of Single-View and Multi-View Depth for Autonomous Driving 提出了一个单、多视图融合深度估计系统,它自适应地集成了高置信度的单视图和多视图结果 动态选择两个分支之间的高置信度区域执行融合 提出了一个双分支网络,即一个以单…

查看笔记本电池容量/健康状态

1. 打开命令行提示符 快捷键“win R”后输入“cmd” 2. 在命令提示符中输入命令 “powercfg /batteryreport" 并回车 3. 查看文件 最后就可以看到笔记本的电池使用报告了

Promises: JavaScript异步编程的救星

Promises: JavaScript异步编程的救星 Promises(承诺)是JavaScript中处理异步操作的一种机制,它提供了一种更优雅和可读性更高的方式来处理异步代码。Promises的实现原理基于一种称为"Promise/A"规范的约定,该规范定义了…

[蓝桥杯2024]-Reverse:rc4解析(对称密码rc4)

无壳 查看ida 这里应该运行就可以得flag,但是这个程序不能直接点击运行 按照伪代码写exp 完整exp: keylist(gamelab) content[0xB6,0x42,0xB7,0xFC,0xF0,0xA2,0x5E,0xA9,0x3D,0x29,0x36,0x1F,0x54,0x29,0x72,0xA8, 0x63,0x32,0xF2,0x44,0x8B,0x85,0x…

visual studio2022,开发CMake项目添加rabbitmq库,连接到远程计算机并进行开发于调试

1.打开visual studio installer 。安装“用于 Windows 的 C CMake 工具” 2.新建CMake项目 3.点击VS的“工具”—>"选项“—>“跨平台”—>”连接管理器“,添加远程计算机。用来将VS编辑的代码传到服务器进行编译–连接—运行(调试)。 …

BIO、NIO与AIO

一 BIO 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理. BIO(Blocking I/O,阻塞I/O)模式是一种网络编程中的I/O处理模式。在BIO模式中&#xf…

鸿蒙内核源码分析(任务调度篇) | 任务是内核调度的单元

任务即线程 在鸿蒙内核中,广义上可理解为一个任务就是一个线程 官方是怎么描述线程的 基本概念 从系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源,并独立于其它线程运行。 鸿蒙内核每个…