Difference between revisions of "SELECT .. SELECT/ja"

From SQLZOO
Jump to: navigation, search
(Subquery with FROM)
(Subquery with IN)
Line 24: Line 24:
 
</div>
 
</div>
  
==Subquery with IN==
+
==IN とサブクエリ==
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Find the countries in the same region as Bhutan</p>
+
<p class='imper'>ブータンBhutanと同じ地域region にある国を見つける</p>
You may use a <code>SELECT</code> statement in the <code>WHERE</code> line - this returns a list of regions.
+
<code>SELECT</code> 文を <code>WHERE</code> の行で使うことが出来る。この例では、サブクエリの結果は、地域regions のリスト(複数値)
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>

Revision as of 15:41, 18 April 2018

Language:Project:Language policy English  • 日本語

サブクエリ テーブル、導出テーブル、ネストしたクエリ

あるクエリの実行結果を別のクエリの中で利用できる。

FROM とサブクエリ

SELECT 文を FROM の行で使用できる。

次の場合、導出テーブル Xnamegdp_per_capita のフィールドを持つ。 内側の SELECT で求められた値は、外側の SELECT で使われる。

SELECT name, ROUND(gdp_per_capita)
  FROM
  (SELECT name,
          gdp/population AS gdp_per_capita
     FROM bbc) X
 WHERE gdp_per_capita>20000

注意)

  • 内部の表は別名 X が与えられている。
  • 内側のクエリの一つ目のフィールド名は元の名前 name のまま。
  • 内側のクエリの二つ目のフィールド名は別名 gdp_per_capita を与えられている。

IN とサブクエリ

ブータンBhutanと同じ地域region にある国を見つける

SELECT 文を WHERE の行で使うことが出来る。この例では、サブクエリの結果は、地域regions のリスト(複数値)

SELECT name
  FROM bbc
 WHERE region IN
  (SELECT region FROM bbc
    WHERE name='Bhutan')

Correlated Subquery

If a value from the outer query appears in the inner query this is "correlated subquery".

Show the countries where the population is greater than 5 times the average for its region

SELECT name
  FROM bbc b1
 WHERE population> 
  5*(SELECT AVG(population) FROM bbc
     WHERE region=b1.region)


See also: