关于postgresql除法的信息

数据分析校招sql50题-2

1.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

民勤网站建设公司创新互联,民勤网站设计制作,有大型网站制作公司丰富经验。已为民勤成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的民勤做网站的公司定做!

第一步 从sc表中筛选出不及格记录 再按照学生id聚合,并用having count筛选出有2条记录以上的学生id

第二步 与student表关联

2.检索" 01 "课程分数小于 60,按分数降序排列的学生信息

双表联合查询写法

过程总结一个问题,后面有group by聚合的话,前面select的字段不能为 。这是因为聚合之后的汇总数据条数比整体的 要少,没法一起select,所以要先把汇总数据写在子查询里,再去与相关的表关联

4.查询各科成绩最高分、最低分和平均分:

与13题思路相同,结果:

15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

15-1 按各科成绩进行排序,并显示排名, Score 重复时合并名次

不会

PS:

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。

其参数:over(partition by columnname1 order by columnname2)

16.查询学生的总成绩,并进行排名,总分重复时不保留名次空缺

思路同15题

17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比

postgresql除法默认结果保留整数,需要用::numeric转换类型之后再用round()函数保留4位小数

18.查询各科成绩前三名的记录

思路同15题, 分组之后针对每组进行数据排序再按条件筛选

20.查询出只选修两门课程的学生学号和姓名

上面是嵌套查询,如果是联合查询:

sql表小数点前面的0不显示问题

declare @c as decimal(6,2)

set @c=0.10

select @c 数字,cast(@c as varchar(20)) 字符

其实从上图中可以看出,SQL输出的结果是没有错的,很可能是程序将其小数点前面的0省略掉了。

postgresql 中 sum / 10000 后得到的值总是0?求解

因为除法得出的结果默认类型为integer,如果你的sum/10000是一个小于1的数字,那么显示出来就是0,你只要把类型改一下就可以sum/10000::numeric


当前文章:关于postgresql除法的信息
文章出自:http://scjbc.cn/article/dsdhchd.html

其他资讯