我正在学校上课。
有一个问题:
"查找统计部门中学生的ID和姓名,这些学生的学分总数少于统计部门学生总学分的十分之一。按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;
我没有问他什么,因为我感到很害羞。但是有人可以解释使用“少”和“更多”的情况。这里吗?
答案 0 :(得分:3)
more
和less
是表别名。解决方案从STUDENTS表中选择两次自连接,并且必须使用别名来区分这两个实例。别名可以是more
和less
比t1
和t2
更具表现力的任何内容。