SQL语句,急

来源:百度知道 编辑:UC知道 时间:2024/06/28 19:51:04
题目:查询平均成绩是前30%且没有不及格成绩所有学生的学号、姓名、性别、专业、平均成绩,并且改变查询结果中显示的列名分别为:学号、姓名、性别、专业、成绩。
在这里我想请问一下怎样表示前30%的语句(脚本),可以的话帮我写出实现本题目的全部语句(脚本),谢谢!
具体问题如下:
2.使用SQL语句(Query Analyzer) 创建四个基本表(包括索引、各种约束) 的语句脚本:
● 专业设置表(专业编号,系名,专业名),专业编号是3位数字字符,其中:第1位是学院号,第2,3位是专业号。
● 学生情况表(学号,姓名,性别,出生日期,入学年份,专业编号) ,学号是10位数字字符,其中:第1∽4位是入学年份;第5∽7位是专业编号;第8位是班序号;第9∽10位是班内序号。不设置外码,通过学号的构成定义约束实现引用完整性。
● 课程设置表(课程编号,课程名称,学时数,学分) ,课程编号是3位字符,其中:第1位是课程类别;第2∽3位是对应课程类别中的课程序号。学时数是不超过150的整数。
● 学生选课(学号,课程编号,成绩) ,成绩按百分制。
(注,根据上面的要求创建四个表,然后解决下面的问题)
查询平均成绩是前30%且没有不及格成绩所有学生的学号、姓名、性别、专业、平均成绩,并且改变查询结果中显示的列名分别为:学号、姓名、性别、专业、成绩。

select Top (学生人数 * 30%), 学号,姓名,性别,专业,成绩 from 学生表 where 平均成绩 where 平均成绩 >= 及格分数 Group By 平均成绩 desc

先统计合计 然后再乘以0.3不就得到要查到数量了吗 select top 数量不就可以了?

select count(学号)最后要加GROUP BY学号

首先, 求出所有人的平均成绩, 例如是 N 个人, 则有个N个平均成绩,
然后,这个平均成绩从高到低排列, 取 TOP N*30% ... ORDER BY 平均成绩 DESC

要实现,你必须写出详细的表结构,你说的这些,信息不足。

前 30% 的语句格式为 select top 30 percent * from 表

按照你说的
select top 30 percent 学号、姓名、性别、专业、成绩 from 表 where ?? group by ??? 就这样啦

select
form into
whorer