mysql-sql-练习题-4-标记(排名 条件判断)

news2025/1/12 12:02:14

标记

  • 标记找规律
    • 连续登录2-7天用户
      • 建表
      • 排名找规律
    • 最大连胜次数
      • 建表
      • 多次排名 找规律
      • 输出更多数据
  • 标记计数 百分比

标记找规律

连续登录2-7天用户

在这里插入图片描述

建表

create table continuous_login(
	user_id1 integer comment '用户id',
	date_login date comment '登陆日期'
) comment '用户登录表';

insert into continuous_login
values
  (1,'2022-01-10'),
  (1,'2022-01-11'),
  (1,'2022-01-13'),
  (1,'2022-01-14'),
  (1,'2022-01-15'),
  (1,'2022-01-16'),
  (1,'2022-01-17'),
  (1,'2022-01-18'),
  (1,'2022-01-19'),
  (2,'2022-01-05'),
  (2,'2022-01-06'),
  (2,'2022-01-07'),
  (2,'2022-01-11'),
  (3,'2022-01-01'),
  (3,'2022-01-03'),
  (3,'2022-01-11');

排名找规律

with tmp as(-- 过滤 保证无重复日期
  select *
  from continuous_login
  group by user_id1,date_login
),
  tmp1 as(-- 日期排名 等差数列
    select
      *,
      dense_rank() over(partition by user_id1 order by date_login) dr
    from continuous_login 
  ),
  tmp2 as(-- 等差 - 等差 =  差一样
    select
      user_id1,
      count(1) days_login_consecutive, -- 连续登录天数
      concat(min(date_login),'/',max(date_login)) date_finish_begin -- 拼接 连续登录起止日期
    from tmp1
    group by user_id1, adddate(date_login,-dr) -- 连续登录日期 等差数列
    having count(1) between 2 and 7 -- 连续登录所有情况中过滤出连续登录2-7天
  )
select -- 输出格式
  user_id1,
  group_concat(days_login_consecutive) days_login_consecutive,
  group_concat(date_finish_begin) date_finish_begin
from tmp2
group by user_id1;

在这里插入图片描述

最大连胜次数

在这里插入图片描述

建表

create table if not exists match1(
	player_id integer unsigned not null default 0 comment '玩家ID',
	match_day date default '1970-01-01' comment '比赛日期',
	result1 varchar(5) comment '比赛结果'
) comment '玩家比赛表';

insert into match1
value
	('1','2022-01-17','Win'),
	('1','2022-01-18','Win'),
	('1','2022-01-25','Win'),
	('1','2022-01-31','Draw'),
	('1','2022-02-08','Win'),
	('2','2022-02-06','lose'),
	('2','2022-02-08','lose'),
	('3','2022-03-30','Win');

多次排名 找规律

with tmp as(-- 日期多次排名 找规律
  select
    player_id,match_day,result1,
    if(result1 = 'Win',1,0) result1_if, -- if标记 为了计数
    dense_rank() over(partition by player_id order by match_day) dr,
    dense_rank() over(partition by player_id,result1 order by match_day) dr1
  from match1
),
  tmp1 as(-- 连续同种结果 差一样
    select
      player_id,
      sum(result1_if) consecutive_count
    from tmp
    group by player_id,dr - dr1
  )
select -- 输出格式
  player_id,
  'Win' result1, -- 比赛结果
  max(consecutive_count) max_consecutive_count -- 最大连胜次数
from tmp1
group by player_id;

在这里插入图片描述

输出更多数据

with tmp as(-- 日期多次排名 找规律
  select
    player_id,match_day,result1,
    dense_rank() over(partition by player_id order by match_day) dr,
    dense_rank() over(partition by player_id,result1 order by match_day) dr1
  from match1
)
select -- 连续同种结果 差一样
  player_id,
  any_value(result1) result1, -- 比赛结果
  count(result1) consecutive_count -- 同种结果 连续次数
from tmp
group by player_id,dr - dr1;

在这里插入图片描述

标记计数 百分比

各科各分数段人数及百分比,及格为:>=60,中等为:70-80,优良为:80-90,优秀为:>=90

with tmp as(-- 标记score 方便计数
  select
    c_id,count(1) num,
    sum(if(score >= 60,1,0)) pass,
    sum(if(score >= 70 and score < 80,1,0)) medium,
    sum(if(score >= 80 and score < 90,1,0)) good,
    sum(if(score >= 90,1,0)) excellent
  from score
  group by c_id
)
select -- 百分比
  c_id,
  num, -- 各科人数
  pass, -- 及格人数
  if(pass = 0,0,concat(cast(pass / num * 100 as decimal(5,2)),'%')) pass_percent, -- 及格率
  
  medium, -- 中等人数
  if(medium = 0,0,concat(cast(medium / num * 100 as decimal(5,2)),'%')) medium_percent, -- 中等率
  
  good, -- 优良人数
  if(good = 0,0,concat(cast(good / num * 100 as decimal(5,2)),'%')) good_percent, -- 优良率
  
  excellent, -- 优秀人数
  if(excellent = 0,0,concat(cast(excellent / num * 100 as decimal(5,2)),'%')) excellent_percent -- 优秀率
from tmp;

在这里插入图片描述

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

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

相关文章

一加12/11/10/Ace2/Ace3手机上锁回锁BL无限重启黑屏9008模式救砖

一加12/11/10/Ace2/Ace3手机官方都支持解锁BL&#xff0c;搞机的用户也比较多&#xff0c;相对于其他品牌来说&#xff0c;并没有做出限制&#xff0c;这也可能是搞机党最后的救命稻草。而厌倦了root搞机的用户&#xff0c;就习惯性回锁BL&#xff0c;希望彻底变回官方原来的样…

约瑟夫问题新解法

前言 又碰到了约瑟夫问题&#xff0c;这样的题目本来用环形链表模拟的话就能做出来。然而&#xff0c;最近新学习了一种做法&#xff0c;实在是有点震惊到我了。无论是思路上&#xff0c;还是代码量上&#xff0c;都是那么的精彩。就想也震惊一下其他人。谁能想到原来模拟出来四…

Go-变量

可以理解为一个昵称 以后这个昵称就代指这些信息 var sg string "czy" 声明赋值 package mainimport "fmt"func main() {var sg string "陈政洋"fmt.Println(sg)var age int 73fmt.Println(age)var flag bool truefmt.Println(flag) } …

【JVM】内存调优——内存泄漏、内存溢出

内存调优 什么是内存泄漏、内存泄漏&#xff1f; 内存泄漏&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收。内存溢出&#xff1a;内存的使用量超过了Java虚拟机可以分配的上限&#xff…

ARP欺骗使局域网内设备断网

一、实验准备 kali系统&#xff1a;可使用虚拟机软件模拟 kali虚拟机镜像链接&#xff1a;https://www.kali.org/get-kali/#kali-virtual-machines 注意虚拟机网络适配器采用桥接模式 局域网内存在指定断网的设备 二、实验步骤 打开kali系统命令行&#xff1a;ctrlaltt可快…

栈的表达式求值中的应用——逆波兰表达式求值+中缀表达式转后缀表达式

文章目录 1. 逆波兰表达式&#xff08;后缀表达式&#xff09;求值思路讲解AC代码 2. 中缀表达式转后缀表达式分析方法总结 3. 中缀表达式求值 1. 逆波兰表达式&#xff08;后缀表达式&#xff09;求值 链接: link 这道题目叫做逆波兰表达式求值&#xff0c;那什么是逆波兰表…

使用PyTorch从头实现Transformer

前言 本文使用Pytorch从头实现Transformer&#xff0c;原论文Attention is all you need paper&#xff0c;最佳解读博客&#xff0c;学习视频GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了…

05月04日(周六)30场比赛前瞻

今日数据&#xff1a; 昨日复盘&#xff1a; 欧洲五大联赛指的是欧洲影响力及竞技水平排名前五的足球联赛&#xff0c;通常包括英格兰足球联赛&#xff08;The Premier League&#xff09;、西班牙足球甲级联赛&#xff08;La Liga&#xff09;、意大利足球甲级联赛&#xff0…

vue2人力资源项目3主页

主页权限验证 前置守卫开启进度条&#xff0c;后置守卫关闭进度条 import router from /router import nProgress from nprogress// 导入进度条&#xff08;模板自带&#xff09; import nprogress/nprogress.css// 导入进度条样式&#xff08;模板自带&#xff09; // 前置守…

java中对文件的基本操作

文件IO 文件IO。啥叫文件的IO&#xff1f; 他就是指&#xff1a;1.Input&#xff08;输入&#xff09;2.Output&#xff08;输出&#xff09;。 比如&#xff0c;我们的电脑可以从网络中下载文件&#xff0c;也可以通过网络上传文件等等很多的例子&#xff0c;都体现了输入和…

Xamarin.Android项目使用ConstraintLayout约束布局

Xamarin.AndroidX.ConstraintLayout Xamarin.Android.Support.Constraint.Layout Xamarin.AndroidX.ConstraintLayout.Solver Xamarin.AndroidX.DataBinding.ViewBinding Xamarin.AndroidX.Legacy.Support.Core.UI Xamarin.AndroidX.Lifecycle.LiveData ![在这里插入图片描述]…

android天气实战

页面绘制 问题1、下拉框需要背景为透明 我懒得写全部省份就写了5个所以不需要往下 图标准备 iconfont-阿里巴巴矢量图标库几坤年没来这了好怀念啊&#xff0c;图标库选择下雨的图标等 准备网络请求 0、API接口准备 api免费七日天气接口API 未来一周天气预报api (tianqiap…

SVM直观理解

https://tangshusen.me/2018/10/27/SVM/ https://www.bilibili.com/video/BV16T4y1y7qj/?spm_id_from333.337.search-card.all.click&vd_source8272bd48fee17396a4a1746c256ab0ae SVM是什么? 先来看看维基百科上对SVM的定义: 支持向量机&#xff08;英语&#xff1a;su…

[BLE] Heart Rate Protocol - Sensor

写在前面 目前我从网上找到的有关BLE心率协议的博文内容良莠不齐&#xff0c;很难让人根据文章内容来全面理解心率服务&#xff1b;此外SIG网站上有关心率服务的文档比较多&#xff0c;内容比较碎&#xff0c;需要读者从多个文档中将需要的内容拼接起来&#xff0c;因此写下这…

【动态规划】路径问题|不同路径I|不同路径II|珠宝的最高价值|下降路径的最小和|最小路径和|

一、不同路径I 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; &#x1f4a1;细节&#xff1a; 1.多开一行和一列&#xff08;跟一维数组多开一个位置一样&#xff09;&#xff0c;这样方便初始化 2.状态转移方程&#xff1a;注意走一步并不是多一种走的路径&#xff0…

在编程的世界里,我相信每一行代码都是一次对未来的投资

&#x1f600;前言 突然有感而发也是激励自己互勉 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 在编程的世界里&#xff0c;我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里&#xff0c;我相信每一行代码都是一…

数据库基础--MySQL多表查询之外键约束

MySQL多表关系 一对一 顾名思义即一个对应一个的关系&#xff0c;例如身份证号对于每个人来说都是唯一的&#xff0c;即个人信息表与身份证号信息表是一对一的关系。车辆信息表与车牌信息表也是属于一对一的关系。 一对多 即一个表当中的一个字段信息&#xff0c;对应另一张…

【数据库原理及应用】期末复习汇总高校期末真题试卷02

试卷 一、填空题 数据库系统是指计算机系统中引入数据库后的系统&#xff0c;一般由数据库、________、应用系统、数据库管理员和用户构成。当数据库的存储结构发生了改变&#xff0c;由数据库管理员对________映象作相应改变&#xff0c;可以使________保持不变&#xff0c;…

vue快速入门(五十一)历史模式

注释很详细&#xff0c;直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式&#xff0c;历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

从零开始学AI绘画,万字Stable Diffusion终极教程(一)

【第1期】SD入门 2022年8月&#xff0c;一款叫Stable Diffusion的AI绘画软件开源发布&#xff0c;从此开启了AIGC在图像上的爆火发展时期 率先学会SD的人&#xff0c;已经挖掘出了越来越多AI绘画有趣的玩法 从开始的AI美女、线稿上色、真人漫改、头像壁纸 到后来的AI创意字、AI…