返回介绍

solution / 0500-0599 / 0578.Get Highest Answer Rate Question / README

发布于 2024-06-17 01:03:59 字数 2490 浏览 0 评论 0 收藏 0

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

English Version

题目描述

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 是该问题在当前会话中的数字顺序。

 

回答率 是指:同一问题编号中回答次数占显示次数的比率。

编写一个解决方案以报告 回答率 最高的问题。如果有多个问题具有相同的最大 回答率 ,返回 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 回答率最高。

解法

方法一

# Write your MySQL query statement below
SELECT question_id AS survey_log
FROM SurveyLog
GROUP BY 1
ORDER BY SUM(action = 'answer') / SUM(action = 'show') DESC, 1
LIMIT 1;

方法二

WITH
  T AS (
    SELECT
      question_id AS survey_log,
      (SUM(action = 'answer') OVER (PARTITION BY question_id)) / (
        SUM(action = 'show') OVER (PARTITION BY question_id)
      ) AS ratio
    FROM SurveyLog
  )
SELECT survey_log
FROM T
ORDER BY ratio DESC, 1
LIMIT 1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文