小编典典

如何选择这样的2张表

sql

这样的情况下如何选择表。

我有一张桌子,上面放着各种各样的主题。

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    |
|==========|=============|=========|===========|=========|

请帮助我解决这个问题。对不起,我的英语不好。我还是初学者


阅读 144

收藏
2021-04-15

共1个答案

小编典典

您有一些方法可以做到这一点,但是尝试不创建临时表,您可以执行以下操作:

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

只需根据需要将总和/格线填充到其他主题即可!

希望能帮助到你。

2021-04-15