見出し画像

【SQLZOO答え】1.SELECT name

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

0.SQLZOO練習問題

SELECT names

1.Y で始まる国名を見つける

WHERE name LIKE 'B%' というコードで、"B" から始まる国名を検索できる。% 記号はワイルドカード といい、どんな文字列(複数の文字。0文字でも可)にもマッチする。

select
 name
from
 world
where
 name LIKE 'y%'

2.y で終わる国名を見つける

select
 name
from
 world
where
 name LIKE '%y'

3.x を含む国名を見つける

ルクセンブルグ Luxembourg には x が一文字あり、同様の国はこの他にもある。どちらもリストアップする。

select
 name
from
 world
where
 name LIKE '%X%'

4.land で終わる国名を検索する

アイスランド Iceland とスイス Switzerland は land で終わっている。他にもあるか?

select
 name
from
 world
where
 name LIKE '%land'

5.C で始まり ia で終わる国を見つける

コロンビア Columbia は C で始まり、ia で終わる。このような国は2つ以上ある。

select
 name
from
 world
where
 name LIKE 'C%ia'

6.oo を名前に含む国を見つける

ギリシャ Greece は e を続けて2つ含む。o を続けて2つ含む国は?

select
 name
from
 world
where
 name LIKE '%oo%'

7.a を3つ以上含む国名を見つける

バハマ Bahamas にはa が3つある。他にあるか?

select
 name
from
 world
where
 name LIKE '%a%a%a%'

8."t" を第2文字目に持つ国名を見つける

インド India と アンゴラ Angola は n が2文字目にある。ある一文字を表すワイルドカードにはアンダースコア_を使う。

SELECT name FROM world
WHERE name LIKE '_n%'
ORDER BY name
select
 name
from
 world
where
 name LIKE '_t%'
order by
 name

9.複数の"o"が他の2文字で隔てられている国名を見つける

レソト Lesotho と モルドバ Moldova はどちらも2つの o が 2つの他の文字で隔てられている。

select
 name
from
 world
where
 name LIKE '%o__o%'

10.ちょうど4文字の国名を見つける

キューバ Cuba と トーゴ Togo の国名は4文字。

select
 name
from
 world
where
 name LIKE '____'

11.首都と国名が同じ国を見つける

ルクセンブルグ Luxembourg の首都は Luxembourg です。首都と国名が同じ国名をすべて表示する。

select
 name
from
 world
where
 name =  capital

12.国名 + "City" が首都の国を見つける。

Mexico の首都は Mexico City です。首都が国名に続けて "City" という国をすべて表示する。
concat 関数(結合関数):concat 関数は結合(concatenate)を短縮した関数名です。この関数で2個以上の文字列を結合できます。

select
 name
from
 world
where
 capital = concat(name,' city')

13.国名を首都名に含む国の、首都と国名を表示する

select
 capital,name
from
 world
where
 capital 
like
 concat('%',name,'%')

14.国名を拡張した首都名を持つ国の、首都と国名を見つける

検索結果にはMexico よりも長くなったMexico Cityを含めること。Luxembourg は首都と国名が同じなので含めないこと。

select
 capital,name
from
 world
where
 capital 
like
 concat('%',name,'%')
  and name <> capital

15.国名と首都の拡張部分を見つける

Monaco-Ville の国名は Monaco で、拡張部分は -Ville です。
SQL の関数 MIDとLENGTH を使う。

select
 name, mid(capital,length(name)+1) as ext
from
 world
where
 capital 
like
 concat('%',name,'%') 
  and name <> capital

その他の答えへ

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

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

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