当前位置: 首页 > news >正文

【力扣白嫖日记】1934.确认率

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1934.确认率
表:Signups

列名类型
user_idint
time_stampdatetime

User_id是该表的主键。每一行都包含ID为user_id的用户的注册时间信息。

表:Confirmations

列名类型
user_idint
time_stampdatetime
actionENUM

(user_id, time_stamp)是该表的主键。user_id是一个引用到注册表的外键。action是类型为(‘confirmed’, ‘timeout’)的ENUM该表的每一行都表示ID为user_id的用户在time_stamp请求了一条确认消息,该确认消息要么被确认(‘confirmed’),要么被过期(‘timeout’)。

用户的 确认率 是 ‘confirmed’ 消息的数量除以请求的确认消息的总数。没有请求任何确认消息的用户的确认率为 0 。确认率四舍五入到 小数点后两位 。

编写一个SQL查询来查找每个用户的 确认率 。


我那不值一提的想法:

  • 首先梳理表内容,题干一共给了两张表,一张登录表,记录了用户id,时间戳,一张确认表,记录了用户id,时间戳,和响应状态(包括确认,超时)
  • 其次分析思路,需要查询用户的确认率,确认率也就是确认的消息除以请求消息的总数,如果没有任何请求消息,则确认率为0
  • 这道题难度不大,就是求各用户的action = "confirmed"的总数除以各用户count(action)的总数。
  • 一开始我不知道咋了,脑壳发卡了,用的笨办法
with all_count as (
select s.user_id,count(c.user_id) as all_counts
from Confirmations c 
right join Signups s 
on c.user_id = s.user_id
group by user_id)
,
con_count as (
select s.user_id,count(c.action) as con_counts
from Confirmations c 
right join Signups s 
on c.user_id = s.user_id and action = "confirmed"
group by user_id)select a.user_id,ifnull(round(c.con_counts/a.all_counts,2),0) as confirmation_rate
from all_count a 
left join con_count c 
on a.user_id = c.user_id
  • 后来突然反应过来不就if判断语句就可以了吗
select s.user_id,round(ifnull(sum(if(c.action = "confirmed",1,0))/count(c.action),0),2) as confirmation_rate 
from Signups s 
left join Confirmations c 
on s.user_id = c.user_id
group by s.user_id

结果:

在这里插入图片描述


总结:

能运行就行。


http://www.lryc.cn/news/319229.html

相关文章:

  • TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时
  • PCL 高斯投影反算:高斯投影坐标转大地坐标(C++详细过程版)
  • 解决:IDEA编译Java程序时报编译失败
  • vue+vite根据版本号清空用户浏览器缓存
  • AXI CANFD MicroBlaze 测试笔记
  • 操作系统——cpu、内存、缓存介绍
  • 【理解机器学习算法】之岭回归Ridge - L2 Rgularization
  • 【Linux进程状态】
  • 【RS422】基于未来科技FT4232HL芯片的多波特率串口通信收发实现
  • Internet协议的安全性
  • LeetCode每日一题——移除元素
  • vue3之自定义指令
  • MySQL语法分类 DQL(5)分组查询
  • C++程序设计-练手题集合【期末复习|考研复习】
  • 文件上传漏洞------一句话木马原理解析
  • Openfeign使用教程(带你快速体验Openfeign的便捷)
  • 【leetcode】相同的树➕对称二叉树➕另一棵树的子树
  • uni-app 安卓手机判断是否开启相机相册权限
  • GPT实战系列-LangChain构建自定义Agent
  • uniapp-vue3 项目初始化集成配置【开箱即用】
  • 【Qt】使用Qt实现Web服务器(一):QtWebApp介绍、演示
  • SQLiteC/C++接口详细介绍之sqlite3类(八)
  • 面视题之——悲观锁和乐观锁
  • OpenAI 的 GPTs 提示词泄露攻击与防护实战:攻击卷(一)
  • 【 c 语言 】指针入门
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Swiper)
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-2、线条平滑曲面(原始颜色)但不去除无效点
  • win10 + cpu + pycharm + mindspore
  • 设计一个生产制造系统100问?
  • LeetCode 面试经典150题 26.删除有序数组中的重复项