MySQL实战1

主要内容

  1. 墨西哥和美国第三高峰
  2. 用latest_event查找当前打开的页数

一.墨西哥和美国第三高峰

1.准备工作

代码如下(示例):

drop database if exists db_1;create database db_1;use db_1;CREATE TABLE tb_mountains (name VARCHAR(50),height INT,country VARCHAR(50)
);INSERT INTO tb_mountains (name, height, country)
VALUES('德纳利山', 20310, '美国'),('圣伊莱亚斯山', 18008, '美国'),('福拉克山', 17402, '美国'),('奥里萨巴峰', 18491, '墨西哥'),('波波卡特佩特尔火山', 17820, '墨西哥'),('伊斯塔西瓦特尔火山', 17160, '墨西哥')
;select * from tb_mountains;

2.目标

  • 说明

  • 找出每个国家第三高的山名,并按ASC顺序对国家、地区排序

  • 输入

在这里插入图片描述

  • 输出
    在这里插入图片描述

3.实现

代码如下(示例):
with t1 as (selectname, height, country,dense_rank() over (partition by country order by height desc) as rnfrom tb_mountains
)
selectname, height, country
from t1
where rn=3

4.相似例子

部门工资前三高的所有员工

代码如下(示例):

# todo 问题: 开窗函数中 1 row_number 2 rank 3 dense_rank 区别在什么地方
Create table If Not Exists Employee (id int, name varchar(255), salary int, depa
Create table If Not Exists Department (id int, name varchar(255));
Truncate table Employee;insert into Employee (id, name, salary, departmentId) values ('1', 'Joe', '85000
insert into Employee (id, name, salary, departmentId) values ('2', 'Henry', '800
insert into Employee (id, name, salary, departmentId) values ('3', 'Sam', '60000
insert into Employee (id, name, salary, departmentId) values ('4', 'Max', '90000
insert into Employee (id, name, salary, departmentId) values ('5', 'Janet', '690
insert into Employee (id, name, salary, departmentId) values ('6', 'Randy', '850
insert into Employee (id, name, salary, departmentId) values ('7', 'Will', '7000
Truncate table Department;
insert into Department (id, name) values ('1', 'IT');
insert into Department (id, name) values ('2', 'Sales');select * from employee;select * from department;with t1 as (selecte.id, e.name employee, e.salary, e.departmentId, d.name as department
from Employee e
join department d on e.departmentId = d.id
),
t2 as (selectid, employee, salary, departmentId, department,# row_number() over (partition by departmentId order by salary desc) as# rank() over (partition by departmentId order by salary desc) as rndense_rank() over (partition by departmentId order by salary desc) as rnfrom t1
)
selectdepartment,employee,salary,rn
from t2
where rn<=3
;
with t1 as (selecte.id, e.name employee, e.salary, e.departmentId, d.name as departmentfrom Employee ejoin department d on e.departmentId = d.id
),
t2 as (selectid, employee, salary, departmentId, department,# row_number() over (partition by departmentId order by salary desc) as# rank() over (partition by departmentId order by salary desc) as rndense_rank() over (partition by departmentId order by salary desc) as rn
from t1
)
selectdepartment,employee,salary
from t2
where rn<=3
;

二.用latest_event查找当前打开的页数

1.准备工作

代码如下(示例):
drop database if exists db_1;
create database db_1;
use db_1;CREATE TABLE tb_pages_info (page_id INT,event_time TIMESTAMP,page_flag VARCHAR(3)
);
INSERT INTO tb_pages_info (page_id, event_time, page_flag)
VALUES(1, NOW() - INTERVAL 6 HOUR, 'ON'),(1, NOW() - INTERVAL 3 HOUR, 'OFF'),(1, NOW() - INTERVAL 1 HOUR, 'ON'),(2, NOW() - INTERVAL 3 HOUR, 'ON'),(2, NOW() - INTERVAL 1 HOUR, 'OFF'),(3, NOW(), 'ON');select * from tb_pages_info;

2.目标

  • 说明

  • 查找当前正在使用的页面数,通过page_flag识别开/关
    根据题目描述,"tb_pages_info"表的结构如下所示:
    在这里插入图片描述
    其中,"page_id"列表示⻚面的唯一标识符,"event_time"列表示⻚面状态更改的时间戳,“page_flag"列表示⻚面的状态标志,可以为"ON"或"OFF”。
    问题:给定下表,表中包含有关⻚面状态更改时间的信息。
    请使用SQL查找当前使用 latest_event 的⻚面数。
    注意,表中 page_flag 列将用于识别⻚面是『OFF』还是『ON』。

  • 输入
    在这里插入图片描述

  • 输出
    在这里插入图片描述

  • 解释
    根据给定的示例输入,页面2的最新状态为"OFF",页面1和页面3最新状态为"ON"。因此,具有最新状态的页面数量为2。

3.实现

代码如下(示例):
with t1 as (selectpage_id, event_time, page_flag,row_number() over (partition by page_id order by event_time desc) as rnfrom tb_pages_info
),
t2 as (select*from t1where rn=1 and page_flag='ON'
)
selectcount(1) as result
from t2
;

4.拓展问题

除了显示正在打开的页面数,还需要显示哪些页面?

代码如下(示例):
with t1 as (selectpage_id, event_time, page_flag,row_number() over (partition by page_id order by event_time desc) asfrom tb_pages_info
),
t2 as (select*from t1where rn=1 and page_flag='ON'
)
selectcount(1) over() as result,page_id# event_time, page_flag, rn
from t2
;

总结

实战2
以上是今天要讲的内容,实战了:墨西哥和美国第三高峰,用latest_event查找当前打开的页数。

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

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

相关文章

Windows 操作系统提供的函数SetEvent以及ResetEvent,用于操作事件对象。它们属于同步原语函数,用于实现线程同步和互斥

文章目录 前言1、ResetEvent2、SetEvent3、WaitForSingleObject4、WaitForMultipleObjects 前言 SetEvent 和 ResetEvent 是 Windows 操作系统提供的函数&#xff0c;用于操作事件对象。它们属于同步原语函数&#xff0c;用于实现线程同步和互斥。这些函数的类型如下&#xff1…

C++设计模式_20_Composite 组合模式

Composite 组合模式和后面谈到的Iterator&#xff0c;Chain of Resposibility都属于“数据结构”模式。Composite 组合模式核心是通过多态的递归调用解耦内部和外部的依赖关系。 文章目录 1. “数据结构”模式1.1 典型模式 2. 动机( Motivation )3. 模式定义4. Composite 组合模…

科普|电源自动测试系统测试的项目都有哪些?

电源自动测试系统是一种用于电源性能自动测试的集成系统&#xff0c;它可以自动检测电源模块或开关电源的输入、输出、保护等各个方面。该系统通常由数据软件和各类硬件测试仪器共同组成&#xff0c;利用通讯总线、测试夹具以及其它线缆等将仪器进行连接组成整体的系统结构&…

【esp32]VSCode-SPI控制OLED

根据Adafruit_GFX第三方库&#xff0c;其drawPixel方法由子类实现 代码&#xff1a;在OLED实现函数功能 先声明类 SPI库和Adafruit库、SSD1306 #include <Arduino.h> #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> …

省钱兄共享娱乐室无人系统软硬件结合是怎样开发的

随着科技的快速发展&#xff0c;共享经济模式逐渐渗透到各个领域。在娱乐室领域&#xff0c;省钱兄共享娱乐室无人系统软硬件结合的开发应运而生&#xff0c;旨在提供高效、安全、经济的娱乐室使用体验。本文将从需求分析、系统设计、软件开发和系统测试四个方面&#xff0c;详…

CentOS7安装playwright终极指南

CentOS7安装playwright终极指南 系统环境为CentOS Linux release 7.9.2009 (Core) 最小安装&#xff0c;考虑到playwright的安装需要 python3.7 &#xff0c;本次直接选择安装python3.8。 升级libstdc cd /opt yum -y install wgetwget http://www.vuln.cn/wp-content/uploa…

day14_集合

今日内容 零、 复习昨日 一、集合框架体系 二、Collection 三、泛型 四、迭代 五、List(ArrayList、LinkedList) 零、 复习 throw和throws什么区别 throwthrows位置方法里面方法签名上怎么写throw 异常对象throws异常类名(多个)作用真正抛出异常对象声明抛出的异常类型 运行时…

极智开发 | CUDA Memory内存模型

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 CUDA Memory内存模型。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 熟悉和了解 CUDA Memory 内存模型对于…

成本预算管理系统

成本预算管理系统 功能介绍&#xff1a; 一 基本信息&#xff1a; 1、产品设置&#xff1a;产品的长、宽、高及面积计算公式的设置。 2、板材设置&#xff1a;板材类别、厚度、尺寸的设置 3、系统名称&#xff1a;风管系统的类别设置 4、公司信息&#xff1a;本公司的信息…

【多线程】线程互斥 {竞态条件,互斥锁的基本用法,pthread_mutex系列函数,互斥锁的原理;死锁;可重入函数和线程安全}

一、进程线程间通信的相关概念 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。确切的说&#xff0c;临界资源在同一时刻只能被一个执行流访问。临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。互斥&#xff1a;通过互…

vue实现图片分页

本小节学会使用v-show和click 、v-bind&#xff0c;v-bind可以简写为: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

基于鸟群算法的无人机航迹规划-附代码

基于鸟群算法的无人机航迹规划 文章目录 基于鸟群算法的无人机航迹规划1.鸟群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用鸟群算法来优化无人机航迹规划。 1.鸟群搜索算法 …

OSCAR数据库上锁问题如何排查

关键字 oscar lock 问题描述 oscar 数据库上锁问题如何排查 解决问题思路 准备数据 create table lock_test(name varchar(10),age varchar(10));insert into lock_test values(ff,10); insert into lock_test values(yy,20); insert into lock_test values(ll,30);sessio…

0基础学习PyFlink——用户自定义函数之UDF

大纲 标量函数入参并非表中一行&#xff08;Row&#xff09;入参是表中一行&#xff08;Row&#xff09;alias PyFlink中关于用户定义方法有&#xff1a; UDF&#xff1a;用户自定义函数。UDTF&#xff1a;用户自定义表值函数。UDAF&#xff1a;用户自定义聚合函数。UDTAF&…

vue2+ant-design-vue a-select组件二次封装(支持单选/多选添加全选/分页(多选跨页选中)/自定义label)

一、效果图 二、参数配置 1、代码示例 <t-antd-selectv-model"selectVlaue":optionSource"stepList"change"selectChange" />2、配置参数&#xff08;Attributes&#xff09;继承 a-select Attributes 参数说明类型默认值v-model绑定值…

安装PS及AI遇到的问题

Mac安装PS/AI/PR/AE提示错误代码146 Failed with error code 146解决办法: 访达, -> 前往 ->前往文件夹 -> /Applications/Utilities/Adobe Sync 将Adobe Sync 文件夹里的CoreSync文件夹直接删掉

C++ 标准库随机数:std::default_random_engine

库头文件 #include <random> // 通过种子值设置随机数生成器 std::default_random_engine rng(seed);// 不设置种子值&#xff0c;使用默认值 std::default_random_engine rng; // 生成一个0到9之间的随机整数 int random_int rng() % 10;// 生成一个0到1之间的随机浮…

vivado crash

将增量编译去了

[Shell] ${} 的多种用法

文章目录 解释代码 解释 在Shell脚本中&#xff0c;${} 是一种变量替换语法。它用于获取和操作变量的值。 具体来说&#xff0c;${} 可以用来执行以下操作&#xff1a; 变量引用&#xff1a;${variable} 表示引用变量 variable 的值。 变量默认值&#xff1a;${variable:-de…

FPGA时序分析与约束(9)——主时钟约束

一、时序约束 时序引擎能够正确分析4种时序路径的前提是&#xff0c;用户已经进行了正确的时序约束。时序约束本质上就是告知时序引擎一些进行时序分析所必要的信息&#xff0c;这些信息只能由用户主动告知&#xff0c;时序引擎对有些信息可以自动推断&#xff0c;但是推断得到…