MySql查询计数和不同

时间:2016-05-04 20:08:45

标签: mysql

我有一张表'问题'用列
用户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  |
+------+----+----+----+----+----+----+----+

1 个答案:

答案 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