典型的三段式SQL写法

# 第一段:select选择字段,含原生字段及构造字段,其中构造的过程中常用sum count round +-*/ 等函数及运算表达式
select
    university,
    difficult_level,
    round(count(qpd.question_id) / count(distinct qpd.device_id),4) as avg_answer_cnt

# 第二段:from选择表格,含合并表格操作
from question_practice_detail as qpd
    join user_profile as up
        on up.device_id=qpd.device_id
    join question_detail as qd
        on qd.question_id=qpd.question_id

# 第三段:数据操作段,含 分组/排序/筛选/取指定行数等操作
group by university,difficult_level;

知识点补充

在合并表格的过程中,存在几种合并方式,下面简单介绍一下这些方式(此处以两张表格的情况为例解释):

合并的过程中,第一张表格在最左边,之后的饿表格依次添加在右边

  • inner join 最终结果为在两张表格中都匹配上的数据项
  • left join 最终结果为inner join结果加上左侧表格(此处为第一张表)未匹配上的数据
  • right join 最终结果为inner join结果加上右侧表格(此处为第一张表)未匹配上的数据
  • full join 最终结果为inner join加上左侧和右侧两张表中未匹配上的数据

备注:只写一个join时默认为inner join模式