Skip to content
Playground

演習: 絞り込み

bookstore データベースで練習します。最初に USE bookstore; で切り替えてください。

ISBN が 9784101010137 の書籍について、タイトル、価格、在庫を表示してください。

期待される結果:

titlepricestock
こころ47345
ヒント

= で値の一致を判定します。文字列はシングルクォートで囲みます。

価格が 4000 円以上の書籍を、タイトルと価格で、価格の高い順、同じ価格の中では書籍 ID の昇順に表示してください。

期待される結果:

titleprice
SRE サイトリライアビリティエンジニアリング5280
データ指向アプリケーションデザイン5060
リファクタリング(第2版)4840
Googleのソフトウェアエンジニアリング4840
プログラミング言語Go4180
Clean Code4104
ヒント

比較演算子 >= で「以上」を判定します。ORDER BY ... DESC で降順に並べます。

価格が 2400 円以上 2700 円以下の書籍を、タイトルと価格で、価格の安い順、同じ価格の中では書籍 ID の昇順に表示してください。

期待される結果:

titleprice
ビジョナリー・カンパニー22420
ハリー・ポッターと賢者の石2420
思考は現実化する2420
アルゴリズム図鑑2618
リーダブルコード2640
21 Lessons2640
ヒント

BETWEEN A AND B で「A 以上 B 以下」を表せます。両端を含みます。

タイトルが「ハリー・ポッター」で始まる書籍を、タイトル、発売日、価格で、発売日の古い順に表示してください。

期待される結果:

titlepublished_atprice
ハリー・ポッターと賢者の石1999-12-012420
ハリー・ポッターと秘密の部屋2000-09-192090
ハリー・ポッターとアズカバンの囚人2001-07-162310
ヒント

LIKE 'パターン%' で前方一致を表せます。% は0文字以上の任意の文字列にマッチします。

タイトルに「データ」が含まれる書籍を、タイトルと価格で、価格の安い順に表示してください。

期待される結果:

titleprice
SQL 第2版 ゼロからはじめるデータベース操作2068
データ指向アプリケーションデザイン5060
ヒント

前後に % を付けると部分一致になります。

authors テーブルから、国(country)が「アメリカ」または「イギリス」の著者を、名前と国で、国の昇順、同じ国の中では著者 ID の昇順に表示してください。

期待される結果:

namecountry
ヘミングウェイアメリカ
ピーター・ドラッカーアメリカ
ジム・コリンズアメリカ
ダスティン・ボスウェルアメリカ
アンドリュー・ハントアメリカ
ロバート・C・マーティンアメリカ
フレデリック・P・ブルックス Jr.アメリカ
アラン・ドノバンアメリカ
スティーブン・R・コヴィーアメリカ
ジャレド・ダイアモンドアメリカ
D・カーネギーアメリカ
ナポレオン・ヒルアメリカ
タイタス・ウィンタースアメリカ
リチャード・P・ファインマンアメリカ
ベッツィ・ベイヤーアメリカ
アガサ・クリスティーイギリス
リンダ・グラットンイギリス
マーチン・ファウラーイギリス
J.K.ローリングイギリス
マーティン・クレップマンイギリス
ヒント

IN (A, B, ...) で複数の値のいずれかに一致する行を取り出せます。ORDER BY はカンマ区切りで複数列を指定できます。

authors テーブルから、生年(birth_year)が登録されていない著者を、名前と国で、著者 ID の昇順に表示してください。

期待される結果:

namecountry
ダスティン・ボスウェルアメリカ
ミック日本
アラン・ドノバンアメリカ
マーティン・クレップマンイギリス
タイタス・ウィンタースアメリカ
ベッツィ・ベイヤーアメリカ
ヒント

NULL の判定には IS NULL を使います。= NULL では判定できません。

2-h. 漫画以外のベストセラーを確認する

Section titled “2-h. 漫画以外のベストセラーを確認する”

漫画(category_id = 7)はシリーズ単位で在庫数が膨らむため、単発のベストセラーを把握したいときは除外したい。漫画以外で、在庫が 50 冊を超える書籍を、タイトル、カテゴリ ID、在庫で、在庫の多い順、同じ在庫の中では書籍 ID の昇順に表示してください。

期待される結果:

titlecategory_idstock
容疑者Xの献身165
完訳 7つの習慣562
ノルウェイの森 上158
嫌われる勇気558
ノルウェイの森 下155
生き方255
ガリレオの苦悩152
ヒント

<>(または !=)は「等しくない」を表す演算子です。= の否定として使います。複数の条件は AND で組み合わせます。

価格が 500 円以下、または 4000 円以上の書籍を、タイトルと価格で、価格の安い順、同じ価格の中では書籍 ID の昇順に表示してください。

期待される結果:

titleprice
DRAGON BALL 1420
ONE PIECE 1440
ONE PIECE 2440
こころ473
Clean Code4104
プログラミング言語Go4180
リファクタリング(第2版)4840
Googleのソフトウェアエンジニアリング4840
データ指向アプリケーションデザイン5060
SRE サイトリライアビリティエンジニアリング5280
ヒント

OR は「左右どちらかの条件が真なら真」です。安い側と高い側を 1 つの結果にまとめられます。

authors テーブルから、生年(birth_year)が登録されていて、かつ 1950 年以降に生まれた著者を、名前と生年で、生年の古い順、同じ生年の中では著者 ID の昇順に表示してください。

期待される結果:

namebirth_year
ロバート・C・マーティン1952
リンダ・グラットン1955
鳥山明1955
岸見一郎1956
東野圭吾1958
ジム・コリンズ1958
マーチン・ファウラー1963
アンドリュー・ハント1964
J.K.ローリング1965
安宅和人1968
伊坂幸太郎1971
尾田栄一郎1975
ユヴァル・ノア・ハラリ1976
又吉直樹1980
諫山創1986
石田保輝1988
ヒント

IS NOT NULL で NULL 以外の行を絞り込めます。AND で複数条件を組み合わせ、ORDER BY は複数キーを指定できます。