牛客网刷题学习SQL(三)

SQL23 统计每个学校各难度的用户平均刷题数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首先分析题目:

想要计算一些参加了答题的不同学校不同难度的用户平均答题量
不同学校: group by 学校
不同难度: group by 难度
平均答题量:注意用户去重,还有指定question_id、device_id是那个表的属性,不然会报列属性不明确的错

count(qpd.question_id)/count(distinct qpd.device_id) avg_answer_cnt

** 注意一下题目中的细节:
请你写一个SQL查询,计算不同学校、不同难度的用户平均答题量,根据示例,你的查询应返回以下结果(结果在小数点位数保留4位,4位之后四舍五入):**
所以平均答题代码需要修改:其实不修改也可以运行成功,但是细节可以减少真正开发的bug发生

round(count(qpd.question_id)/count(distinct qpd.device_id),4) avg_answer_cnt

后面就通过左连接查询

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

总结一下:
相对前面的练习这次多使用了round函数

round函数

SQL 中的 ROUND() 函数是用于对数字进行四舍五入的函数,其语法如下:

ROUND(number, decimal_places)

其中,number 表示要进行四舍五入的数字,decimal_places 表示要保留的小数位数。如果 decimal_places 为正数,则表示保留的小数位数;如果 decimal_places 为负数,则表示舍入到小数点左侧的位数。

例如,以下 SQL 查询语句将 2.34567 这个数字四舍五入保留两位小数:

SELECT ROUND(2.34567, 2);

查询结果为:

2.35

需要注意的是,如果 number 的小数位数小于 decimal_places,则结果将补齐为 decimal_places 位,例如:

SELECT ROUND(2.3, 4);

查询结果为:

2.3000

在实际应用中,ROUND() 函数通常用于数据统计、报表生成等场合,可以对数字进行格式化处理,使其更符合人类的阅读习惯。

猜你喜欢

转载自blog.csdn.net/qq_53037676/article/details/130938554