【MySQL】ALL函数的巧用 以及 排序(order by)巧用 sum(条件表达式) 语法
力扣题
1、题目地址
578. 查询回答率最高的问题
2、模拟表
SurveyLog 表:
| Column Name | Type |
|---|---|
| id | int |
| action | ENUM |
| question_id | int |
| answer_id | int |
| q_num | int |
| timestamp | int |
- 这张表可能包含重复项。
- action 是一个 ENUM(category) 数据,可以是 “show”、“answer” 或者 “skip” 。
- 这张表的每一行表示:ID = id 的用户对 question_id 的问题在 timestamp 时间进行了 action 操作。
- 如果用户对应的操作是 “answer” ,answer_id 将会是对应答案的 id ,否则,值为 null 。
- q_num 是该问题在当前会话中的数字顺序。
3、要求
回答率 是指:同一问题编号中回答次数占显示次数的比率。
编写一个解决方案以报告 回答率 最高的问题。如果有多个问题具有相同的最大 回答率 ,返回 question_id 最小的那个。
查询结果如下例所示。
示例 1:
输入:
SurveyLog table:
| id | action | question_id | answer_id | q_num | timestamp |
|---|---|---|---|---|---|
| 5 | show | 285 | null | 1 | 123 |
| 5 | answer | 285 | 124124 | 1 | 124 |
| 5 | show | 369 | null | 2 | 125 |
| 5 | skip | 369 | null | 2 | 126 |
输出:
| survey_log |
|---|
| 285 |
解释:
问题 285 显示 1 次、回答 1 次。回答率为 1.0 。
问题 369 显示 1 次、回答 0 次。回答率为 0.0 。
问题 285 回答率最高。
4、代码编写
我的写法
SELECT question_id AS survey_log
FROM (SELECT question_id, SUM(action = 'answer')/SUM(action = 'show') AS qFROM SurveyLogGROUP BY question_id
) AS one
WHERE q >= ALL(SELECT SUM(action = 'answer')/SUM(action = 'show') AS qFROM SurveyLogGROUP BY question_id
)
ORDER BY question_id
LIMIT 1
代码解析:
1、先算出问题各自的回答率(sum(条件表达式) 只要里面条件表达式是 true 就加一,和 count 作用一样)
SELECT question_id, SUM(action = 'answer')/SUM(action = 'show') AS q
FROM SurveyLog
GROUP BY question_id
2、求出回答率是最高的问题
WHERE q >= ALL(SELECT SUM(action = 'answer')/SUM(action = 'show') AS qFROM SurveyLogGROUP BY question_id
)
ALL 函数的效果可以理解成(这是 ALL 前面是 >= 或 > 的情况,如果ALL前面是 <= 或 < 的情况,则是 MIN)
SELECT MAX(q)
FROM (SELECT SUM(action = 'answer')/SUM(action = 'show') AS qFROM SurveyLogGROUP BY question_id
) AS one
还有一个 ANY 函数,与 ALL 函数相反(ANY 前面是 >= 或 > 的情况,是 MIN,如果 ANY 前面是 <= 或 < 的情况,则是 MAX)
具体可参考:MySQL 中 ALL 和 ANY 的用法
参考里面注意看评论,参考里面最后一个例子看着是有误的
网友写法
SELECT question_id AS survey_log
FROM SurveyLog
GROUP BY question_id
ORDER BY SUM(action = 'answer')/SUM(action = 'show') DESC , question_id
LIMIT 1
代码解析:
1、分组已经决定了后面出来的条数,我们要取出满足条件的放在前面,然后取一条即可(LIMIT 1),这就需要用到排序。
2、排序的话,我们知道是要 回答率高 的放在前面,SUM(action = 'answer')/SUM(action = 'show') 就是算出回答率,DESC 倒序
- 后面按要求如果
最大回复率没有重复,直接取第一条即可 - 后面按要求如果
最大回答率有重复,则按 question_id 正序排后,再取第一条即可
相关文章:
【MySQL】ALL函数的巧用 以及 排序(order by)巧用 sum(条件表达式) 语法
力扣题 1、题目地址 578. 查询回答率最高的问题 2、模拟表 SurveyLog 表: Column NameTypeidintactionENUMquestion_idintanswer_idintq_numinttimestampint 这张表可能包含重复项。action 是一个 ENUM(category) 数据,可以是 “show”、“answer”…...
Debezium发布历史49
原文地址: https://debezium.io/blog/2019/02/19/reliable-microservices-data-exchange-with-the-outbox-pattern/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 使用发件箱模式进行可靠的微服务数…...
数据结构——队列(Queue)
目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入(入队) 2.2.3 队列的数据删除(出队) 2.2.4 取队头数据 2.2.5 取队…...
uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建
锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...
两种方式实现mysql截取年月日
select date_format(now(), %Y-%m-%d) select substring(now(), 1, 10)...
WPF 使用矢量字体图标
矢量字体图标 在WPF项目中经常需要显示图标,但是项目改动后,有时候需要替换和修改图标,这样非常麻烦且消耗开发和美工的时间。为了快速开发项目,节省项目时间,使用图标矢量字体图标是一个非常不错的选择。 矢量字体图标…...
编程语言的语法糖,你了解多少?
什么是语法糖 语法糖是一种编程语言的特性,通常是一些简单的语法结构或函数调用,它可以通过隐藏底层的复杂性,并提供更高级别的抽象,从而使代码更加简洁、易读和易于理解,但它并不会改变代码的执行方式。 为什么需要语…...
MySQL中FLUSH TABLES命令语法
在MySQL中,FLUSH TABLES 命令的作用是刷新表。当你使用 FLUSH TABLES 命令的具体选项时(例如 FLUSH TABLES WITH READ LOCK),该选项必须是在 FLUSH 语句中唯一指定的命令。即,在一个 FLUSH 语句中,你只能使…...
如何在小米4A刷OpenWRT系统并通过cpolar实现公网访问本地路由器
文章目录 前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 前言 OpenWRT是一个高度模块化、高度自…...
Spring学习之——事务控制
Spring中的事务控制 说明: JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案。 Spring框架为我们提供了一组事务控制的接口。具体在后面的小节介绍。这组接口是在spring-tx.RELEASE.jar中。 spri…...
云原生技术专题 | 解密2023年云原生的安全优化升级,告别高危漏洞、与数据泄露说“再见”(安全管控篇)
背景介绍 2023年,我们见证了科技领域的蓬勃发展,每一次技术革新都为我们带来了广阔的发展前景。作为后端开发者,我们深受其影响,不断迈向未来。 随着数字化浪潮的席卷,各种架构设计理念相互交汇,共同塑造了…...
如何启用Windows电脑的内置Administrator账户
前言 不知道从什么时候开始,新电脑或者新系统开机之后都会出现一个界面让你创建一个账户,但这个账户有可能是本地账户(Windows10)还有强制你登录微软账户的(Windows11)。 好像曾经熟悉的电脑Administrator…...
智慧工厂:科技与制造融合创新之路
随着科技的迅猛发展,智慧工厂成为制造业领域的热门话题。智慧工厂利用先进的技术和智能化系统,以提高生产效率、降低成本、增强产品质量和灵活性为目标,正在引领着未来制造业的发展。 智慧工厂的核心是数字化和自动化生产,相较于传…...
SCADE—产品级安全关键系统的MBD开发套件
产品概述 随着新能源三电、智能驾驶等新技术的应用,汽车中衍生出很多安全关键零部件,如BMS、VCU、MCU、ADAS等,相应的软件在汽车中的比重越来越大,并且安全性、可靠性要求也越来越高。ANSYS主要针对安全关键零部件的嵌入式产品级软…...
PyTorch|保存与加载自己的模型
训练好一个模型之后,我们往往要对其进行保存,除非下次用时想再次训练一遍。 下面以一个简单的回归任务来详细讲解模型的保存和加载。 来看这样一组数据: xtorch.linspace(-1,1,50)xx.view(50,1)yx.pow(2)0.3*torch.rand(50).view(50,1) 画…...
javaScript:Math工具类方法
1 Math工具类方法: >和其他的类的不同,Math并不是一个构造函数,也就是无法通过new来创建Math的实例 >Math表示的数学,在Math对象中存储了一组数学运算相关的常量的和方法 >这些常量和方法可以直接通过Math来访问 >比如Math.P…...
ffmpeg转码新技能
ffmpeg转码新技能 mp3转wavmp4转gif mp3转wav 今天发现之前用ffmpeg转码不好使了。今天发现一个ffmpeg转码新的用法非常简单 ffmpeg -i 0104.mp3 -f wav 0104.wav mp4转gif 同学求助将mp4转gif。我先用剪影把mp4的多余黑边去除。然后用ffmpeg将mp4转出了gif ffmpeg -i shu…...
Docker学习笔记(一):Docker命令总结
Docker命令总结 一、Docker介绍1.1 镜像与容器区别 二、Docker命令 一、Docker介绍 Docker是一个开源的应用容器引擎,它允许开发者在几乎任何环境中运行应用程序,而无需担心运行环境的问题。Docker的核心概念是容器,它可以将应用程序及其依赖…...
JavaWeb——后端案例
五、案例 1. 开发规范—Restful REST(Representational State Transfer),表述性状态转换,是一种软件架构风格 注: REST是风格,是约定方式,不是规定,可以打破描述模块的功能通常使…...
【CSS】浅学一下filter
目录 1、基本概念 2、用法 3、应用案例 更加智能的阴影效果: 元素、网页置灰 元素强调、高亮 毛玻璃效果 调整网页sepia 褐色值可以实现护眼效果 1、基本概念 CSS filter 属性将模糊或颜色偏移等图形效果(对比度、亮度、饱和度、模糊等等&#…...
Cursor集成Trunk插件:AI编程与代码质量守护的完美融合
1. 项目概述:当AI编程助手遇上代码质量守护者最近在折腾Cursor编辑器,发现了一个挺有意思的插件项目——trunk-io/cursor-plugin。简单来说,这就是一个桥梁,把Trunk这个代码质量与安全平台的能力,直接集成到了Cursor这…...
如何利用Marketing-for-Engineers营销自动化工具:节省90%时间的终极指南
如何利用Marketing-for-Engineers营销自动化工具:节省90%时间的终极指南 【免费下载链接】Marketing-for-Engineers A curated collection of marketing articles & tools to grow your product. 项目地址: https://gitcode.com/gh_mirrors/ma/Marketing-for…...
告别SSH命令行:用VSCode的Log Viewer插件实时监控Linux syslog日志(附C程序测试)
告别终端监控:在VSCode中实现Linux系统日志可视化追踪 每次调试服务器应用时,你是否也厌倦了在SSH终端和代码编辑器之间反复切换?那些不断滚动的tail -f输出窗口不仅占用宝贵屏幕空间,还让问题排查变成了一场视觉追踪游戏。对于现…...
NotebookLM未公开的Obsidian插件桥接协议(内部文档泄露版),仅限前500名技术决策者获取
更多请点击: https://intelliparadigm.com 第一章:NotebookLM与Obsidian整合的架构全景图 NotebookLM(Google 推出的 AI 原生研究助手)与 Obsidian(本地优先、双向链接的知识图谱工具)的整合,正…...
别再被FFmpeg里的12bpp搞懵了!手把手教你理解YUV420sp与BPP的关系
别再被FFmpeg里的12bpp搞懵了!手把手教你理解YUV420sp与BPP的关系 第一次在FFmpeg文档里看到"12bpp"这个描述时,我盯着屏幕愣了半天——RGB24格式不是8bpp吗?YUV420不是应该更节省空间吗?怎么反而变成了12bpp࿱…...
六、Ext系列文件系统(2)
...
这家头部智能家居品牌是如何让全渠道电商闭环运营落地?
在电商渠道愈发多元的当下,让很多企业陷入 “数据多却用不好” 的困境。这不是个别现象,而是绝大多数全渠道电商企业正在经历的“成长烦恼”。今天,我们用一个真实案例,带您看看如何用一套系统,彻底告别这些噩梦。这家…...
智能产品系统架构分析 - 智能办公系统架构分层
方向:方案分析、架构设计、模块分解 智能产品系统架构分析:智能办公系统架构分层。 对智能办公系统进行架构分层分析,给出实例、UML建模、项目结构等。 “智能产品系统架构分析:智能办公系统架构分层”。 包含设备控制、预约管…...
必看!移动岗亭厂家交货及时性测评,日硕科技排名第一!
《【移动岗亭厂家交货及时性】哪家好:专业深度测评排名前五》开篇:定下基调在当今快节奏的商业环境中,移动岗亭的采购方对于厂家的交货及时性愈发重视。及时的交货能够确保项目按时推进,避免不必要的延误和损失。本次测评的目的就…...
C# 实时查看硬件使用率(CPU 内存 硬盘 网络)
一、整体架构 ┌─────────────────────────────────────────────────────────────┐ │ 硬件资源监控系统 │ ├────────────────────────…...
