Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/578.html
578. Get Highest Answer Rate Question
Level
Medium
Description
Get the highest answer rate question from a table survey_log
with these columns: id, action, question_id, answer_id, q_num, timestamp.
id means user id; action has these kind of values: “show”, “answer”, “skip”; answer_id is not null when action column is “answer”, while is null for “show” and “skip”; q_num is the numeral order of the question in current session.
Write a sql query to identify the question which has the highest answer rate.
Example:
Input:
+------+-----------+--------------+------------+-----------+------------+
| 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 |
+------+-----------+--------------+------------+-----------+------------+
Output:
+-------------+
| survey_log |
+-------------+
| 285 |
+-------------+
Explanation:
question 285 has answer rate 1/1, while question 369 has 0/1 answer rate, so output 285.
Note: The highest answer rate meaning is: answer number’s ratio in show number in the same question.
Solution
Select question_id
from table survey_log
and output the column as survey_log
, and order the selected results by the answer rate in descending order. To obtain the answer rate, use count(answer_id) / count(if('show', 1, 0))
. Use limit 1
to select only one question with the highest answer rate.
# Write your MySQL query statement below
select question_id as survey_log from survey_log
group by question_id
order by count(answer_id) / count(if('show', 1, 0)) desc limit 1;