見出し画像

【SQLZOO答え】3.SELECT from Nobel

SQL入門を勉強するため、友人にSQLの練習問題ないかと聞いたら、
【SQLZOO】というサイトを教えてもらいました。
ただし、問題を解いてるうちに、わからない問題に関して、クエリの答えがおらず、結果しか教えてくれないので、答えをアウトプットしようと思い、noteを始めました。 

0.SQLZOO練習問題

SELECT from Nobel

1.1950 年度の受賞者

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

select
 yr, subject, winner
from
 nobel
where
 yr = 1950;

2.1962年の文学賞

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

select
 winner
from
 nobel
where
 yr = 1962
  AND subject = 'Literature';

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

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

select
 yr, subject
from
 nobel
where
 winner = 'Albert Einstein';

4.近年の平和賞

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

select
 winner
from
 nobel
where
 yr >= 2000
  and subject = 'Peace';

5.1980年代の文学賞

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

select
 yr, subject, winner
from
 nobel
where
 yr between 1980 and 1989
  and subject = 'Literature';

6.大統領のみ

次の大統領の受賞内容の詳細を表示する。
・テオドール=ルーズベルト Theodore Roosevelt
・ウッドロウ=ウィルソン Woodrow Wilson
・ジミー=カーター Jimmy Carter
・バラク=オバマ Barack Obama

select
 * 
from
 nobel
where
 winner IN ('Theodore Roosevelt',
'Woodrow Wilson',
'Jimmy Carter',
'Barack Obama')

7.ジョン

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

select
 winner
from
 nobel
where
 winner like 'john%'

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

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

select
 *
from
 nobel
where
 (yr = 1980 and subject = 'physics')
  or (yr = 1984 and subject = 'chemistry')

9.化学と医学を除く

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

select
 *
from
 nobel
where
 yr = 1980
 and subject not in ('Chemistry', 'Medicine')

10.初期の医学と最近の文学

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

select
 *
from
 nobel
where 
 (yr<1910 and subject='Medicine')
  or (yr>=2004 and subject='Literature')

11.ウムラウト

PETER GRÜNBERG の受賞内容詳細を検索する。 ウムラウトの入力方法(Ü の入力方法)を調べ検索キーワードで機能させる方法を調べる。
非アスキー文字
彼の名前の u には ウムラウト がある。このリンクが便利かも https://en.wikipedia.org/wiki/%C3%9C#Keyboarding

select
 *
from
 nobel
where
 winner = 'PETER GRÜNBERG'

12.アポストロフィー

EUGENE O'NEILL の全ての受賞内容詳細を検索する。
シングルクォートのエスケープ
シングルクォートをクォート文字列中にそのまま置くことはできない。2つのシングルクォートを続けて2つ書くとシングルクォートになる。

select
 *
from
 nobel
where
 winner = 'EUGENE O''NEILL'

13.騎士の領域

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

select
 winner, yr, subject
from
 nobel
where
 winner like 'sir%'
order by
 yr desc, winner;

14.化学賞と物理賞は末尾に

式 subject IN ('Physics' , Chemistry') の値は 0 または 1 として扱われる。
1984年の賞の 受賞者 winner と分野 subject を分野と受賞者の名前順で表示する。ただし化学 Chemistry と物理学 Physics は最後の方に表示する。

select
 winner, subject
from
 nobel
where
 yr=1984
order by
 subject in ('Physics','Chemistry'), subject, winner

その他の答えへ

0.SELECT basics
1.SELECT name
2.SELECT from World
3.SELECT from Nobel
4.SELECT within SELECT
5.SUM and COUNT
6.JOIN
7.More JOIN operations
8.Using Null
8+ Numeric Examples
9.Self join
10.Tutorial Quizzes
11.Tutorial Student Records
12.Tutorial DDL

※問題を攻略でき次第、随時更新いたします。

この記事が気に入ったらサポートをしてみませんか?