关于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