三段式SQL编写

  1. select段:首先明确要什么——university/avg_anser_cnt,其中第一个字段来自表1,第二个字段来自表2,且是表2中question_id与answer_id计算得到的结果
  2. from段:来自表1通过inner join方式混合表2,联接的字段是device_id,因为这是唯一编码
  3. 数据操作段:group by进行分组,分组依据是大学名称

SQL代码

通过上述三段的分析,我们可以展开代码编写:

select
    university,
    round(count(qpd.question_id)/count(distinct qpd.device_id),4) as avg_answer_cnt
from question_practice_detail as qpd
inner join user_profile as up
on up.device_id = qpd.device_id
group by university

不足与反思

在刚开始的时候,明确了第一个字段是university,但是第二个字段却没有想明白,所以没有办法展开做题,而想不明白的原因是没有发现,第二个字段可以完全从表2中独立计算出来,一直在想,怎么从两个表分别取数据构造出一个目标字段,结果就困惑不前了。回过头来看,这是典型的没有仔细观察表格中的现有字段的含义,以及审题不清导致的,因此思路混乱,没有很好的捋清楚线索,逐步找到解决方案。下一次做题的时候务必需要仔细观察表中字段的原本含义及相互对应关系。