我有一张表'问题'用列
用户ID
qid(问题ID)
答案
问题是多项选择,因此并非每个问题都有相同数量的答案供用户选择
问题100可能有4个答案可供选择。
问题200可能有6个答案可供选择。
问题300可能有2个答案可供选择。
等
所以表格看起来像这样:
+-------- --+---------+--------+
| userid | qid | answer |
+---- ------+---------+--------+
| 1 | 100 | 4 |
| 1 | 200 | 6 |
| 1 | 300 | 1 |
| 1 | 400 | 4 |
| 2 | 100 | 1 |
| 2 | 400 | 6 |
| 3 | 200 | 4 |
| 3 | 400 | 4 |
| 3 | 100 | 1 |
| 4 | 100 | 1 |
| 4 | 400 | 6 |
| 5 | 200 | 1 |
| 5 | 400 | 6 |
+-----------+---------+--------+
我想知道问题100的答案最多的是什么,问题100的第二个最高答案的计数是什么,第三个问题的答案是什么?回答问题100等
我无法确定如何查询,也不确定这是否可行。 我的结果是:
+------+----+----+----+----+----+----+----+
| qid |ans1|ans2|ans3|ans4|ans5|ans6|ans7|
+------+----+----+----+----+----+----+----+
| 100 | 3 | 0 | 0 | 1 | 0 | 0 | 0 |
| 200 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 300 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 400 | 0 | 2 | 0 | 0 | 0 | 3 | 0 |
+------+----+----+----+----+----+----+----+
答案 0 :(得分:1)
按问题分组,然后您可以使用适用于每个组的sum()
等聚合函数。您可以使用sum()
中的条件进行条件求和
select qid,
sum(answer = 1) as ans1,
sum(answer = 2) as ans2,
sum(answer = 3) as ans3,
sum(answer = 4) as ans4,
sum(answer = 5) as ans5,
sum(answer = 6) as ans6,
sum(answer = 7) as ans7,
count(*) as total
from your_table
group by qid