我在mysql的同一数据库中有两个表。 “答案”表和“返回”表。
AnswerTable
seqAnswer question1 question2 question3
1 3 2 3
2 4 1 2
3 1 3 4
ReturnTable
id seqreturn question1 question2 question3
1 3 2 3 1 (X,O,X)
2 1 2 2 1 (X,O,X)
3 2 4 3 1 (O,X,X)
4 1 3 2 4 (O,O,X)
5 3 1 3 1 (O,O,X)
6 3 1 3 2 (O,O,X)
question3的(OX,OX,OX)实际上没有插入Returntable.just问问题
我想布置特定的联接表。如何获得下面的联接表?
所需的联接表
Test Number question1 question2 question3 Total
1 1 2 0 2
2 1 0 0 1
3 2 3 1 3
我知道您想计算每个问题收到了多少个好的答案。这可以通过条件聚合来解决,如下所示:
select
a.seqAnswer test_number,
sum(a.question1 = r.question1) question1,
sum(a.question2 = r.question2) question2,
sum(a.question3 = r.question3) question3,
count(*) total
from AnswerTable a
inner join ReturnTable r on r.seqReturn = a.seqAnswer
group by a.seqAnswer
order by test_number
test_number |第1个问题|第2个问题|问题3 |总----------:| --------:| --------:| --------:| ----:1 | 1 | 2 | 0 | 22 | 1 | 0 | 0 | 1个3 | 2 | 3 | 0 | 3
使用subquery
将获得您所需要的,并将每个问题总计加进去
select t1.*
, iif(q1 >= 1, 1, 0) + iif(q2 >= 1, 1, 0) + iif(q3 >= 1, 1, 0) as Total
from
(select seqreturn
, count(question1) as q1
, count(question2) as q2
, count(question3) as q3
from tableA
group by seqreturn) t1