2016-12-24 8 views
1

についてお聞きしたい:SQLは、私がこのSQL文を持って選択句

select max(avrg) 
from (select sum(points) as avrg 
     from marks 
     group by num_eleve) s; 

私はそれが動作することの問題を抱えていたと私は文が失敗したことなくて、一番最後にsが必要であることが判明しました。

私はsが何をしているのか理解したいと思います。上記のクエリs

select max(avrg) 
from (select sum(points) as avrg 
     from marks 
     group by num_eleve); 
+2

RDBMSとは何ですか? MySQL、Oracle、SQL Serverなど? –

+0

私は単にphpmyadminを使用しています – user3564550

答えて

0
select max(avrg) 
from (select sum(points) as avrg 
     from marks 
     group by num_eleve) s; 

は、Sub-select中に存在する列を参照するために使用されるsub-select

(select sum(points) as avrg from marks group by num_eleve) 

に別名です。あなたのクエリは、あなたがavrg列値sをしたいどのテーブルから区別するために、その後avrgという名前の列を持つ別のテーブルとサブ選択に参加したい場合は

select max(s.avrg) --here I have added s.avrg to pull valued from sub-select not from another_table 
from (select sum(points) as avrg 
     from marks 
     group by num_eleve) s Left join another_table b on s.avrg = b.avrg 
に使用されます。また

select max(s.avrg) --here I have added s.avrg 
from (select sum(points) as avrg 
     from marks 
     group by num_eleve) s; 

のように記述することができます

+0

どの規格でそれが必要ですか? –

+0

私はRDBMSが必要とするすべてのOracleを除くと思います –

+0

見た目は1992年です:https://blog.jooq.org/2014/06/24/should-i-put-that-table-alias-or-not/ –

0

クエリのこの作品:

(select sum(points) as avrg from marks group by num_eleve) 

はテーブルとして機能し、単に名前を必要としています。 "s"は行いますが、何でもかまいません。必要に応じてMyTableまたはAveragesまたはMxyzptlkと呼ぶことができます。

関連する問題