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

count()是SQL中用来统计表中记录的一个函数,返回条件的行数

用法:

count(*)

返回表中的记录数(包括所有列),相当于统计表的行数(不会忽略列值为NULL的记录)

count(1)

忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替(不会忽略列值为NULL的记录)

count(列名)

返回列名指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内

count(distinct 列名)

只包括列名指定列,返回指定列的不同值的记录数,在统计结果的时候,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。