使用“更多”' ,' less'在SQL中

时间:2017-02-12 21:55:37

标签: sql oracle

我正在学校上课。

有一个问题:

  

"查找统计部门中学生的ID和姓名,这些学生的学分总数少于统计部门学生总学分的十分之一。按ID顺序列出结果,不要打印重复项。"

为了回答这个问题,我做了以下事情:

架构:

  • 教室(建筑物,房间号,容量)
  • 部门(部门名称,建筑,预算)
  • 课程(课程编号,职称,部门名称,学分)
  • 讲师(证件,姓名,部门名称,工资)
  • 部分(课程ID,第二学期,学期,年份,建筑物,房间号,时段ID)
  • 教授(ID,课程id,sec id,semester,year)
  • 学生(身份证,姓名,部门姓名,信用证)
  • 取(ID,课程ID,第二学期,学期,年级,年级)
  • 顾问(证件编号,身份证)
  • 时段(时段ID,日期,开始时间,结束时间)
  • prereq(course id,prereq id)

我的回答:

    select DISTINCT ID, name
    from student
    where DEPT_NAME = 'Statistics' and TOT_CRED < .1* 128; 

在我的回答中,我硬编码最大学分128小时,这给出了正确的解决方案但不会一直有效。其中一位顶尖学生通过以下方式做到了:

select distinct tochar(less.id,'00009') as ID, less.name 
from student more, student less 
where less.totcred<more.totcred / 10 and more.deptname = 'Statistics' and less.deptname = 'Statistics' 
order by id; 

我没有问他什么,因为我感到很害羞。但是有人可以解释使用“少”和“更多”的情况。这里吗?

1 个答案:

答案 0 :(得分:3)

moreless是表别名。解决方案从STUDENTS表中选择两次自连接,并且必须使用别名来区分这两个实例。别名可以是morelesst1t2更具表现力的任何内容。