Difference between revisions of "SELECT from WORLD Tutorial/ja"

From SQLZOO
Jump to navigation Jump to search
(6 intermediate revisions by the same user not shown)
Line 112: Line 112:
 
<div class='qu'>
 
<div class='qu'>
 
ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。
 
ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。
<p class=imper>面積か人口が大きな国を表示する。国名 人口 面積(name, population , area)を表示する。</p>  
+
<p class=imper>面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。</p>  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
</source>
 
</source>
Line 162: Line 162:
 
<div class='qu'>
 
<div class='qu'>
 
国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。
 
国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。
GDFの単位は$1000単位にまとめる。
+
GDPの単位は$1000単位にまとめる。
 
<p class=imper>GDPが1兆ドル以上の国の国名と国民一人当たりのGDPを1000ドル単位に丸めて表示する。</p>  
 
<p class=imper>GDPが1兆ドル以上の国の国名と国民一人当たりのGDPを1000ドル単位に丸めて表示する。</p>  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 193: Line 193:
 
</div>
 
</div>
  
==Matching name and capital==
+
==国名と首都の一致==
 
<div class='qu'>
 
<div class='qu'>
The capital of Sweden is Stockholm. Both words start with the letter 'S'.
+
スウェーデン Sweden の首都はストックホルム Stockholm 。どちらもSから始まる。
<div class=imper>Show the name and the capital where the first letters of each match.
+
<div class=imper>国名と首都の先頭の文字が同じである国の、国名と首都名を表示する。ただし、国名と首都名が同じ場合は除く。</div>
Don't include countries where the name and the capital are the same word.</div>
+
*文字列の先頭一文字を切り取るには、 [[LEFT]] を使う。
*You can use the function [[LEFT]] to isolate the first character.
+
*記号 <code>&lt;&gt;</code> '''NOT EQUALS''' 演算子の代わりに利用できる。
*You can use <code>&lt;&gt;</code> as the '''NOT EQUALS''' operator.
 
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT name, LEFT(name,1), capital
 
SELECT name, LEFT(name,1), capital
Line 212: Line 211:
 
</div>
 
</div>
  
==All the vowels==
+
==全ての母音==
 
<div class='qu'>
 
<div class='qu'>
'''Equatorial Guinea''' and '''Dominican Republic''' have all of the vowels (a e i o u) in the name. They don't count because they have more than one word in the name.
+
Equatorial Guinea (エクアトリアル ギニア)と Dominican Republic(ドミニカ共和国)はどちらも全ての母音(a e i o u)を国名に含んでいる。これらの国は、名前に単語が2つ以上あるので以下の対象としない。
  
<p class=imper>Find the country that has all the vowels and no spaces in its name.</p>
+
<p class=imper>国名に全ての母音を含む国で、空白を含まない単語1つの国名を検索する。</p>
*You can use the phrase <code>name NOT LIKE '%a%'</code> to exclude characters from your results.
+
*name NOT LIKE '%a%' で特定の文字を含む国を除外できる。
*The query shown misses countries like Bahamas and Belarus because they contain at least one 'a'
+
*入力済みのSQLはBから始まる国名を表示するが、バハマ Bahamas と ベラルーシ Belarus は少なくとも1つ以上のaを含むので表示されない。
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT name
 
SELECT name
Line 238: Line 237:
  
  
<h2>What Next</h2>
+
<h2>次は</h2>
<div class=gamelink style='padding:1ex;border:solid thin gray;border-radius:0.5ex'>[http://sqlzoo.net/40289347/sql3/ Click here to play the SELECT card game]</div>
+
<div class=gamelink style='padding:1ex;border:solid thin gray;border-radius:0.5ex'>[http://sqlzoo.net/40289347/sql3/ SELECTカードゲームをプレイ]</div>
 
<ul>
 
<ul>
   <li>[[BBC QUIZ]]</li>
+
   <li>[[BBC QUIZ/ja|クイズに挑戦]]</li>
   <li>You can to continue practising the the same techniques
+
   <li>続けてノーベル賞テーブルで、同様のテクニックとより多くの基本スキルを経験できる。
    and gain more experience of the basic skills on the Nobel table.
+
   [[SELECT_from_Nobel_Tutorial/ja | <code>WHERE</code> 節を <code>nobel</code> テーブルで使う。]]
   [[SELECT_from_Nobel_Tutorial |The <code>WHERE</code> statement using the
 
  <code>nobel</code> table.]]
 
 
   </li>
 
   </li>
   <li>You can learn about nested statements, these are instructive and entertaining, but not essential for beginners.
+
   <li>文のネスト(入れ子)について学ぶ。これは初心者には必須ではないが、有益で楽しい。
   [[SELECT_within_SELECT_Tutorial |Nested <code>SELECT</code> statements using the
+
   [[SELECT_within_SELECT_Tutorial/ja | <code>world</code> テーブルでネストした<code>SELECT</code> 文を使う。]]</li>
  <code>world</code> table.]]</li>
 
 
</ul>
 
</ul>

Revision as of 18:42, 18 April 2018

Language:Project:Language policy [[:{{#invoke:String|sub|SELECT from WORLD Tutorial/ja
 |1
 |Expression error: Unrecognized punctuation character "{".
}}|English]]
namecontinentarea populationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748 2831741 12960000000
AlgeriaAfrica2381741 37100000 188681000000
AndorraEurope46878115 3712000000
AngolaAfrica1246700 20609294 100990000000
...
テーブル名 world

name:国名
continent:大陸
area:面積
population:人口
gdp:国内総生産


このチュートリアルでは world テーブルで SELECT コマンドを使う:

導入

このテーブルについて

全ての国の国名と大陸と人口を表示する SQL コマンドを実行して結果を観察する。

SELECT name, continent, population FROM world
SELECT name, continent, population FROM world

大きな国々

WHERE でレコードを選択する方法

人口が2億人(200000000 ゼロが8個ある)以上の国の名前を表示

SELECT name FROM world
WHERE population = 64105700
SELECT name FROM world
WHERE population>200000000

国民一人当たりの国内総生産

人口population2億人以上の国の国名nameと国民一人当たりの国内総生産を表示

国民一人当たりの国内総生産は、国内総生産 GDP を 人口 population で割った値。式は GDP/population

SELECT name, gdp/population FROM world
  WHERE population > 200000000

南アメリカを100万人単位で

大陸continentが South America の国のnamepopulationを 百万人単位 に変換して表示する。人口 population を 1000000 で割ると100万人単位の人口になる。

SELECT name, population/1000000 FROM world
  WHERE continent='South America'

フランス、ドイツ、イタリア

国名nameと人口population を France, Germany, Italy について表示する。

SELECT name, population FROM world
  WHERE name IN ('France','Germany','Italy')

ユナイテッド

国名に 'United' を含む国の国名を特定する。

SELECT name FROM world
  WHERE name LIKE '%United%'

ビッグになる2つの道

ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。

面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。

select name,population,area
from world
where area>3000000
or population>250000000

どちらか片方だけ(両方はダメ)

排他的論理和 Exclusive OR (XOR)の問題。面積か人口のどちらかだけ(両方は除く)が大きな国を表示する。国名 人口 面積を表示する(name, population, area)。

  • オーストラリアは面積は大きく人口は少ないので、含まれる。
  • インドネシアは人口は大きく面積は狭いので、含まれる。
  • 中国は人口も面積も大きいので除かれる。
  • イギリスは人口も面積も小さいので除かれる。
select name, population,area
from world
where
(population>250000000 or area>3000000)
and not(population>250000000 and area>3000000)

端数の丸め

南アメリカ大陸にある国の、国名name、人口population(100万人単位)、GDP(10億ドル単位)を表示する。 ROUND ROUND 関数で小数点以下の数値を2桁に丸める。

南アメリカ大陸にある国の国名と人口(100万人単位)とGDP(10億ドル単位)を小数点以下2桁に丸めて表示する。
1000000 (ゼロが6個 zeros)で割ると100万単位。1000000000(ゼロが9個)で割ると10億単位
SELECT name, ROUND(population/1000000,2),
             ROUND(gdp/1000000000,2)
  FROM world
 WHERE continent='South America'

1兆ドル経済

国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。 GDPの単位は$1000単位にまとめる。

GDPが1兆ドル以上の国の国名と国民一人当たりのGDPを1000ドル単位に丸めて表示する。

select name, ROUND(gdp/population,-3)
from world
where
gdp>1000000000000

国名と首都が同じ文字数

ギリシャ(Greece) の首都はアテネ(Athens)。 GreeceとAthensの綴りはどちらも同じ6文字。

国名 name と首都 capital が同じ長さの国の、国名と首都を表示する。

  • LENGTH 関数で文字列の文字数を求める。
SELECT name, LENGTH(name), continent, LENGTH(continent), capital, LENGTH(capital)
  FROM world
 WHERE name LIKE 'G%'
SELECT name, capital
  FROM world
 WHERE LENGTH(name)=LENGTH(capital)

国名と首都の一致

スウェーデン Sweden の首都はストックホルム Stockholm 。どちらもSから始まる。

国名と首都の先頭の文字が同じである国の、国名と首都名を表示する。ただし、国名と首都名が同じ場合は除く。
  • 文字列の先頭一文字を切り取るには、 LEFT を使う。
  • 記号 <>NOT EQUALS 演算子の代わりに利用できる。
SELECT name, LEFT(name,1), capital
FROM world
SELECT name,capital
FROM world
WHERE LEFT(name,1)=LEFT(capital,1)
AND name<>capital

全ての母音

Equatorial Guinea (エクアトリアル ギニア)と Dominican Republic(ドミニカ共和国)はどちらも全ての母音(a e i o u)を国名に含んでいる。これらの国は、名前に単語が2つ以上あるので以下の対象としない。

国名に全ての母音を含む国で、空白を含まない単語1つの国名を検索する。

  • name NOT LIKE '%a%' で特定の文字を含む国を除外できる。
  • 入力済みのSQLはBから始まる国名を表示するが、バハマ Bahamas と ベラルーシ Belarus は少なくとも1つ以上のaを含むので表示されない。
SELECT name
   FROM world
WHERE name LIKE 'B%'
  AND name NOT LIKE '%a%'
SELECT name
  FROM world
WHERE name LIKE '%a%'
AND name LIKE '%e%'
AND name LIKE '%i%'
AND name LIKE '%o%'
AND name LIKE '%u%'
AND name NOT LIKE '% %'


次は