SELECT from Nobel Tutorial/ja

From SQLZOO
Jump to: navigation, search
Language:Project:Language policy English  • 日本語 • 中文
nobel
yr subject winner
1960 Chemistry Willard F. Libby
1960 Literature Saint-John Perse
1960 Medicine Sir Frank Macfarlane Burnet
1960 Medicine Peter Madawar
...

nobel ノーベル賞

簡単なテーブルへのクエリーで簡単なSQLの練習を続ける。

このチュートリアルはノーベル賞受賞者に関するテーブルを扱う:

nobel(yr, subject, winner)
ノーベル(年度, 分野, 受賞者)

SELECT 文を使用する。

1950 年度の受賞者

1950年度のノーベル賞受賞者を表示するようにクエリーを修正する。

SELECT yr, subject, winner
  FROM nobel
 WHERE yr = 1960
SELECT yr, subject, winner
  FROM nobel
 WHERE yr = 1950

1962年の文学賞

ノーベル文学賞(Literature)を1962年に受賞した人を表示

SELECT winner
  FROM nobel
 WHERE yr = 1960
   AND subject = 'Physics'
SELECT winner
  FROM nobel
 WHERE yr = 1962
   AND subject = 'Literature'

アルバート・アインシュタイン

アルバート・アインシュタイン(Albert Einstein)がノーベル賞を受賞した年と分野を表示

SELECT yr, subject
FROM nobel
WHERE winner = 'Albert Einstein'

近年の平和賞

ノーベル平和賞( subject が Peace )の 2000年以降(2000を含む)の受賞者名を表示

SELECT winner
FROM nobel
WHERE subject = 'Peace'
AND yr >= 2000

1980年代の文学賞

1980から1989年の間のノーベル文学賞について、年度、分野、受賞者の全ての詳細を表示する。

SELECT yr,subject,winner
FROM nobel
WHERE subject = 'Literature'
AND yr BETWEEN 1980 AND 1989

大統領のみ

次の大統領の受賞内容の詳細を表示する。

  • テオドール=ルーズベルト Theodore Roosevelt
  • ウッドロウ=ウィルソン Woodrow Wilson
  • ジミー=カーター Jimmy Carter
  • バラク=オバマ Barack Obama
SELECT * FROM nobel
 WHERE yr = 1970
  AND subject IN ('Cookery',
                  'Chemistry',
                  'Literature')
SELECT * FROM nobel
 WHERE  winner IN ('Theodore Roosevelt',
  'Woodrow Wilson',
  'Jimmy Carter',
  'Barack Obama')

ジョン

ファーストネームが John の受賞者を表示

SELECT winner FROM nobel
  WHERE winner LIKE 'John %'

異なる年度の化学賞と物理学賞

1980年のノーベル物理賞 physics の受賞者 と 1984年の化学賞 chemistry の受賞者を共に表示する

SELECT *
FROM nobel
WHERE (subject='physics' AND yr=1980) OR
      (subject='chemistry' AND yr=1984)

化学と医学を除く

1980年の 化学 Chemistry と医学 Medicine 以外で、賞の年度、分野、名前を表示

SELECT *
FROM nobel
WHERE yr=1980 AND
  subject NOT IN ('Chemistry','Medicine')

初期の医学と最近の文学

1910年以前(1910は含まず)の 初期の医学 Medicine の受賞者 と 2004年以降(2004は含む)の 最近の文学 Literature の受賞者 を共に表示する。

SELECT *
FROM nobel 
WHERE (subject='Medicine' and yr <1910) OR
      (subject='Literature' AND yr>=2004)

より難しい問題

ウムラウト

PETER GRÜNBERG の受賞内容詳細を検索する。 ウムラウトの入力方法(Ü の入力方法)を調べ検索キーワードで機能させる方法を調べる。

彼の名前の u には ウムラウト がある。このリンクが便利かも https://en.wikipedia.org/wiki/%C3%9C#Keyboarding
SELECT *
FROM nobel 
WHERE winner in ('Peter Grünberg')

アポストロフィー

EUGENE O'NEILL の全ての受賞内容詳細を検索する。

シングルクォートをクォート文字列中にそのまま置くことはできない。2つのシングルクォートを続けて2つ書くとシングルクォートになる。
SELECT *
FROM nobel 
WHERE winner in ('Eugene O''Neill')

騎士の領域

騎士の順序

騎士の受賞者リストを表示する。 Sir. で始まる受賞者の 受賞者、年、分野 を表示する。 年が新しい順に、同年内では名前順に表示する。

SELECT winner, yr, subject
FROM nobel 
WHERE winner LIKE 'Sir%'
ORDER BY yr DESC, winner

化学賞と物理賞は末尾に

式 subject IN ('Physics' , Chemistry') の値は 0 または 1 として扱われる。

1984年の賞の 受賞者 winner と分野 subject を分野と受賞者の名前順で表示する。ただし化学 Chemistry と物理学 Physics は最後の方に表示する。

SELECT winner, subject, subject IN ('Physics','Chemistry')
  FROM nobel
 WHERE yr=1984
 ORDER BY subject,winner
select winner, subject
from nobel
where yr=1984
order by subject in ('Physics','Chemistry'),subject,winner