这样的情况下如何选择表。
我有一张桌子,上面放着各种各样的主题。
table subjects |===========|============| |Subjects id| Subjects | |===========|============| | 01 |mathematics | | 02 |biology | | 03 |geography | | 04 |physics | |===========|============|
然后我还有一张表来保存每个这样的学生的价值。
table score |==========|============|===============| |Student id|Subjects id | Score | |==========|============|===============| | 10001 | 01 | 8 | | 10001 | 02 | 6 | | 10001 | 03 | 7 | | 10001 | 04 | 9 | | 10002 | 01 | 5 | | 10002 | 02 | 7 | | 10002 | 03 | 10 | | 10002 | 04 | 7 | | 10003 | 01 | 6 | | 10003 | 02 | 7 | | 10003 | 03 | 8 | | 10003 | 04 | 9 | |==========|============|===============|
我想用下表创建一个查询,但是我不知道该怎么做。
|==========|=============|=========|===========|=========| |Student id| mathematics | biology | geography | physics | |==========|=============|=========|===========|=========| | 10001 | 8 | 6 | 7 | 9 | | 10002 | 5 | 7 | 10 | 7 | | 10003 | 6 | 7 | 8 | 9 | |==========|=============|=========|===========|=========|
请帮助我解决这个问题。对不起,我的英语不好。我还是初学者
您有一些方法可以做到这一点,但是尝试不创建临时表,您可以执行以下操作:
select s.id, avg(case when sb.id = '01' then s.score end) as math, avg(case when sb.id = '02' then s.score end) as bio from student s join subject sb on (sb.id = s.subject_id) group by s.id
只需根据需要将总和/格线填充到其他主题即可!
希望能帮助到你。