2017-02-12 38 views
-1

我正在學校中使用SQL類。在SQL中使用'more','less'

有一個問題:

「找到那些學生在統計部門誰擁有更小的十分之一在最學分統計部學生的總學分表的ID和名稱。你的結果在編號順序,不要打印重複。「

要回答這個問題,我做了以下內容:

架構:

  • 教室(建築物,房間號,容量)
  • 部門(部門名稱,建築,預算)
  • 場(當然ID,標題,DEPT名稱,學分)
  • 指導員(ID,姓名,部門名,薪水)
  • 節(課程編號,安全ID,學期一年,建築,房間號,時隙號)
  • 教(ID,課程ID,安全ID,學期一年)
  • 學生(ID,姓名,部門名,TOT CRED)
  • 需要(ID,課程ID,安全ID,學期一年,等級)
  • 顧問(S ID,我ID)
  • 時隙(時隙號,日期,開始時間,結束時間)
  • prereq(course id,prereq id)

我的回答:

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

在我的答案我硬編碼的最大學分128,這給正確的解決方案,但不會肯定工作的高材生所有time.One做了以下方法:

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

他們是'學生'表的別名。此查詢用於在表的所有行上進行成對比較。 – CollinD

+3

如果這是頂尖學生的工作,教授一定很糟糕。這甚至不正確。 –

+0

由於同一個表連接兩次,它們只是表所需的表別名。 –

回答

3

moreless是表別名。該解決方案從STUDENTS表中選擇兩次,一個自連接,並且別名是區分這兩個實例所必需的。別名可以是任何東西,但morelesst1t2更具表現力。

+0

我現在看到了。我們需要別名進行比較。但是,爲什麼你說他們很貴?因爲他們使用了更多的字母? –

+0

再次閱讀。他沒說貴。 –