题目:

从 survey_log 表中获得回答率最高的问题,survey_log 表包含这些列:id, action, question_id, answer_id, q_num, timestamp。

id 表示用户 id;action 有以下几种值:“show”,“answer”,“skip”;当 action 值为 “answer” 时 answer_id 非空,而 action 值为 “show” 或者 “skip” 时 answer_id 为空;q_num 表示当前会话中问题的编号。

请编写 SQL 查询来找到具有最高回答率的问题。

示例:

 解题思路:

最开始没读懂题意,看了别人的题解才知道,一个题号有一个答题流程,当题目出现时(show)-选手选择回答或者跳过(answer/skip)-下一题出现(show)-选手选择回答或跳过(answer/skip)--...每个题目出现以后,选手只能在回答和跳过中选择一种。

①先算出题目回答answer的总数和题目show出现的总数

1 select question_id,
2 sum(if(action='answer',1,0)) as ans_num,
3 sum(if(action='show',1,0)) as cout_num
4 from survey_log
5 group by question_id;

②在计算出回答率,降序排序,取出第一条数据中的question_id。

 1 select question_id
2 from (
3 select question_id,
4 sum(if(action='answer',1,0)) as ans_num,
5 sum(if(action='show',1,0)) as cout_num
6 from survey_log
7 group by question_id
8 ) as temp
9 order by ans_num / cout_num desc
10 limit 1;

小知识:

①MySQL中的if:

IF(expr1,expr2,expr3)
-- 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。

②limit n 等价于 limit 0 , n :从第一行开始取,共取 n 行;

limit n offset m :跳过前m行,从m+1行开始取,一共取n行。

limit m ,n == limit n offset m;  -- 跳过前m行,从m+1行开始取,一共取n行
limit n == limit 0,n;

力扣578(MySQL)-查询回答率最高的问题(中等)的更多相关文章

  1. 力扣1052. 爱生气的书店老板-C语言实现-中等难度

    题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...

  2. 力扣---1148. 文章浏览 I

    Views 表:+---------------+---------+| Column Name   | Type    |+---------------+---------+| article_i ...

  3. 力扣---511. 游戏玩法分析 I

    活动表 Activity: +--------------+---------+| Column Name  | Type    |+--------------+---------+| player ...

  4. mysql查询缓存打开、设置、参数查询、性能变量意思

    http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/0 ...

  5. MySQL查询高速缓冲

    对mysql的优化不在行,搞过几次优化,但是都不是很理想,还是浪费资源太多.一直发现我的mysql的缓存命中率极差,情况良好的时候到达过60-70%,但是运行时间一长,只有10-20%.查了一些资料, ...

  6. mysql查询之上升的温度,有趣的电影,超过5名学生的课,大国,反转性别, 换座位

    最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 1.上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天 ...

  7. mysql查询之部门工资最高的员工

    最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 de ...

  8. 【转】MySQL查询缓存详解

    [转]MySQL查询缓存详解 转自:https://www.cnblogs.com/Alight/p/3981999.html 相关文章:http://www.zsythink.net/archive ...

  9. MySQL查询缓存详解(总结)

    MySQL查询缓存详解(总结) 一.总结 一句话总结: mysql查询缓存还是可以用用试一试,但是更推荐分布式,比如redis/memcache之流,将数据库中查询的数据和查询语句以键值对的方式存进分 ...

  10. MYSQL查询第二高的薪水

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+| Id | Salary |+----+--------+| 1 | 100 || ...

随机推荐

  1. ESP8266 下安装esptool.py并使用esptool刷机神助手

    一 前记 在使用ESP8266模块时,通常会用到一些刷机软件.官方提供了nodemcu_flasher.ESPFlashDownloadTool.ESP8266Flasher等下载工具,但是缺少更底层 ...

  2. Kotlin学习快速入门(12)—— 位运算符

    由于不懂pythod,最近拜托朋友研究下解密live2d模型的解密算法,朋友写出了Java的代码 之后我进行改版,在转为kotlin的时候,发现kotlin自动转换有些坑,以及kotlin中的位运算符 ...

  3. 3DCAT实时云渲染助力广府庙会元宇宙焕新亮相,开启线上奇趣之旅!

    超 400 万人次打卡,商圈营业额逾 3.6 亿元,2023 年广府庙会于2023年2月11日圆满落幕. 活动期间,佳境美如画,融合VR.AR.虚拟直播等技术的广府庙会元宇宙焕新亮相,群众只需点击一个 ...

  4. openApi generator总是生成类名为 defaultApi

    生成器可以开启 useTags 设置,开启之后会根据 api 文档中的 tags 生成前缀类名,因此,要不生成 defaultApi 需要以下操作: 1.openApi 文档中每个 url 必须要有 ...

  5. 记录--分享8个非常实用的Vue自定义指令

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也允许注册自定义指令.它的作用价值在于当开发人员 ...

  6. 李沐动手学深度学习pytorch实践笔记

    1.pytorch中的矩阵乘法: 2.标量对向量求导: 3.pytorch的backward函数: 4.如何直观理解梯度下降: 梯度,是个向量,有方向和长度就是向量,向量里的各个元素是偏导.是标量对向 ...

  7. C# Demo 资源汇总

    1.OCR 相关OCRService Onnx版 https://lw112190.blog.csdn.net/article/details/132082357 OCRService Sdcb.Pa ...

  8. C# 中文文字识别OCR

    效果 完整Demo下载https://download.csdn.net/download/lw112190/81743333 1. Vs2017打开OcrLiteOnnxCs.sln. 2. 解决方 ...

  9. KingbaseES V8R3 集群运维系列 -- 修改数据库服务端口

    ​ 案例说明: KingbaseES V8R3集群数据库服务端口(默认:54321)的配置在数据库及集群多个配置文件中都存在,修改端口需要更改所有的配置文件,本案例详细描述了数据库服务端口修改操作步骤 ...

  10. KingbaseES toast技术原理及实现

    前言 1.TOAST的作用 TOAST全称是The Oversized-Attribute Storage Technique, 超大属性存储技术,就是超长字段在数据库中的存储方式.主要用来应对物理数 ...