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

企业网站设计注意大学生怎么做网站

企业网站设计注意,大学生怎么做网站,宣讲家网站支部建设,wordpress仿人人网力扣题 1、题目地址 578. 查询回答率最高的问题 2、模拟表 SurveyLog 表: Column NameTypeidintactionENUMquestion_idintanswer_idintq_numinttimestampint 这张表可能包含重复项。action 是一个 ENUM(category) 数据,可以是 “show”、“answer”…

力扣题

1、题目地址

578. 查询回答率最高的问题

2、模拟表

SurveyLog 表:

Column NameType
idint
actionENUM
question_idint
answer_idint
q_numint
timestampint
  • 这张表可能包含重复项。
  • 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:

idactionquestion_idanswer_idq_numtimestamp
5show285null1123
5answer2851241241124
5show369null2125
5skip369null2126

输出:

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 正序排后,再取第一条即可
http://www.yayakq.cn/news/619680/

相关文章:

  • 郑州网站推广汉狮网络网络销售怎么做自己的网站
  • 深圳网站快速排名优化汉中做网站的公司电话
  • 域名申请通过了网站怎么做网站401错误
  • 公司网站建设 阜阳网站建设营销怎么做
  • 提供手机网站建设推荐西安给大学做网站公司
  • 网站建设网站需要什么软件有哪些企业网站欣赏郑州企业形象设计
  • 权威的扬中网站建设彩票网站开发租用
  • 欧美 手机网站模板下载 迅雷下载 迅雷下载 迅雷下载地址网站后台选项卡效果
  • 比较容易做的网站济南哪家做网站
  • 餐饮品牌设计论文seo主管的seo优化方案
  • wordpress 图片广告插件石家庄百度提升优化
  • 网站流量排名查询网站建设比较好
  • 大学网站建设定制网站建设网站响应式和电脑手机
  • 资讯文章类网站织梦模板临清住房建设网站
  • 培训类网站开发深圳网站建设有免费的吗
  • 成都网站建设优创智汇禹州市门户网站建设
  • 推广自己的网站软件工程师招聘
  • 昆明制作手机网站h5前端开发
  • 网站流量超wordpress读取mysql
  • 纺织服装网站建设规划方案个人公司网站搭建
  • 如何给自家网站做关键词优化江门医疗网站建设
  • 美的网站建设wordpress 模板 教程
  • 简约大方的网站个人网站能挂广告吗
  • dede 网站地图模版电子商务网站建设的盈利模式
  • 适合翻译做兼职的网站网站成品作业
  • 网站引导动画怎么做的网站开发前端指什么软件
  • 怎么自己做一个网站网站服务器响应时间过长
  • 网站建设要那些收费项网站搭建怎么收费呀
  • 可信网站身份验证微信推广平台
  • 大气的个人网站移动互联网时代的健康医疗模式转型与创新