我有以下表格。
我想获取以下记录
我尝试使用以下查询
SELECT
u.id,
u.email,
COUNT(a.question_id) as number_of_answers
FROM
user u
LEFT JOIN
answer a ON (a.user_id = u.id)
GROUP BY
u.id;
这给了我以下结果
我现在想要获取每个用户最常用的选项,参考上面的图片,我期待以下结果
-----------------------
user_id | option_id
-----------------------
1 | null
2 | 3
3 | null
-----------------------
如何去做?
感谢。
更新:
此查询为我提供了最接近的结果
SELECT
u.id,
u.email,
COUNT(a.question_id) as number_of_answers,
(SELECT a2.option_id FROM answer a2 WHERE a2.user_id = u.id GROUP BY a2.option_id ORDER BY COUNT(a2.option_id) DESC LIMIT 1) as option_id
FROM
user u
LEFT JOIN
answer a ON (a.user_id = u.id)
GROUP BY
u.id;
现在的问题是它没有按照我的预期订购option_id,如果有相同数量的最大出现次数,我希望最后一次出现option_id,参考下图中的内容。
它给了我以下结果
+-----------+-----------+
| option_id | occurence |
+-----------+-----------+
| 5 | 2 |
+-----------+-----------+
我期待以下
+-----------+-----------+
| option_id | occurence |
+-----------+-----------+
| 1 | 2 |
+-----------+-----------+
原因是,option_id是最后记录的选项。我在这里缺少的任何暗示?