この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回はSQLによる仮想テーブルの作成(with句の実践)について書く。
※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。
with句の実践例 結合のうえ絞り込み
前回振り返り
- 今までは「実態のあるテーブル」の操作(列、行、グループ化、複数テーブルの結合と集合演算)を想定してきたが、現在は「仮想テーブル」を扱う操作を学んでいる。
- 仮想テーブルを作成する方法には、「with句」「ビュー」「サブクエリ」の3つがある。前回は「with句」の基本を学んだ。これで「SQL文の実行結果(=仮想テーブル)に名前を付け、それに対し別のSQL文を実行する」ことが一つのクエリ(命令)でできるようになった。
- 今回はwith句の実践について学ぶ。
結合のうえ絞り込み
- たとえば、ある魚屋の売上表(日付、商品名、個数)について、1月分(small_jan)があるとする。
- 今回は「1月の販売テーブルから、商品の販売個数である「qty」が、テーブル全体の平均値よりも多い商品だけを取得したい」とする。
- その結果を得るには、「①まずテーブル全体の平均を計算のうえ、表の右列に追加するSQLを実行」し、「②qtyが平均より高い行を抽出するSQLを実行」すればよいことになる。
- まず①について。単純な平均の計算は以下となる。
- ①続き。この結果をテーブルの右側に追加する操作。”横”につなげるのでjoinになる。
- ただし、結合するための共通列を保持していないので、総当たりのcross joinで結合する。
- ②については、where句で行を絞り込めば良い。結果は以下のとおり。
(補足・再掲)記述順の整理について
- from、whereのあとにgroup by、havingと続き、最後にorder by、limitと記述する順番に注意。(SQLの内部処理もおおむねこの順番)
- 今まで学んだテーブルの結合・集合演算は、「fromの一部」と覚えると順番がわかりやすい。
- with句を使う場合は、これが冒頭に記述される。ただしそれ以外は従来ルールと同様。
- なので例えば、上のsqlのwhere句(④)はcross joinの後に記述するのが正しい。
with句の実践例 複数の仮想テーブルを扱う
構文
- with句を用いて複数の仮想テーブルを作成することもできる。
- 構文としては単純に「,」でつなげれば良い。
- 具体的には「with 仮想テーブル①の名前 as (仮想テーブル①を作成するSQL文)」のあとに「,」をつけたうえで
- 「仮想テーブル②の名前 as (仮想テーブル②を作成するSQL文)」をつなげる。
実践例
- たとえば、ある魚屋の売上表(日付、商品名、個数)について、1月分(small_jan)、2月分(small_feb)、3月分(small_mar)があるとする。
- 今回は「3月の販売テーブルから、商品の販売個数である「qty」が、1月の平均値および2月の平均値のいずれよりも多い商品だけを取得したい」とする。
- その結果を得るには、「1月分の平均値を計算し、3月に結合」と「2月分の平均値を計算し、3月に結合」のうえ、「そのテーブルについて絞り込み」をする。
- 具体的には以下のとおり。
考察
- SQLについて。今までは「実態のあるテーブル」の操作(列、行、グループ化、複数テーブルの結合と集合演算)を想定してきたが、現在は「仮想テーブル」を扱う操作を学んでいる。今回は「with句」の実践を学んだ。
- 考察。「IT・AIが生活に浸透するなか、それらを使いこなし、一方で人間特有の能力を磨く」ことについて。まずは実際にサービスを使うことが第一。この分野で先進的であり、かつ気軽に利用できるGoogle翻訳を日々の習慣に組み入れ、実践してきたい。
抽象化×英語学習×AI,IT活用
取り組み概要
- 目的は、「IT,AIを実際に使いこなし」かつ「英語を学び、視野を広げる」こと。それにより選択肢を増やし、自分と家族を守ること。
- ポイントは、学びを楽に、楽しく、続けられる工夫をすること。抽象化で本質を学び、Google翻訳でスピーディなインプットとアウトプットを実現し、ブログの1文のみと低いハードルで習慣化する。
- 詳細は別の記事に整理。
(実践①)日本語のプリエディット
- 基本。日本語は特殊なので直訳困難。下準備(加工)が必要。
- コツ1:文は短くシンプルに。長い文は区切る。敬語は使わない。
- コツ2:省略は避けてハッキリと。『誰が・誰の・何を・いつ』を補う。『略語・略称・比喩表現』は使わない。
- コツ3:翻訳しやすい表記に。ひらがなより漢字(例:あめ⇒雨)。漢数字よりアラビア数字(例:百⇒100。数え方は個で統一。特殊記号は使わない。
- 原文例。「まずは実際にサービスを使うことが第一。この分野で先進的であり、かつ気軽に利用できるGoogle翻訳を日々の習慣に組み入れ、実践してきたい。」
- プリエディット例。「私は、実際にサービスを使うことが最初かつ大事なステップだと思います。私は、Google翻訳を日々の習慣として実践します。なぜなら、AI分野で先進的であり、かつ気軽に利用できるからです。」
(実践②)自力での英訳
- 基本。プリエディットをもう1歩進めて「日本語を並び替える」と、自力の英訳が可能になる。
- コツ1:短文の連続にする(意味が伝われば良い)。
- コツ2:語順の”型”は絞る。具体的には基本の3つ。「A=B(例:I am happy)」「主+動+A=B(例:I feel you happy)」「主+動+A+B(例:I give you present)」
- コツ3:使う単語も絞る。日本語側の表現を変えれば手持ちの単語で対応できる。さらに単語を増やす工夫を使う。「in・un・disをつけて反対の意味(例:unhappy)」「動詞にing・edをつけて形容詞を作る(例:exciting)」「前置詞+名詞で形容詞を作る(例:on business trip)」
- 日本語の並び替え例(カッコ内は用いた”型”)。「私は、思う、サービスを使うこと、第一(主+動+A=B)」「だから、私は、にする、Google翻訳の利用を、日々の習慣に(主+動+A=B)」「なぜなら、それは、新しい、AI分野で(A=B)」「また、それの利用は、簡単(A=B)」
- 自力で英訳。「I believe using service is the important first step. 」「so, I make using “Google transfer” daily task. 」「because, it is new in that field. 」「and the using it is easy. 」
(実践③)Google翻訳での添削
- Google翻訳での和訳のコツ。「長い文は区切る」「コンマや5つの接続詞(before,after,but,when,if)前で区切る」「英文の文末にはピリオドとスペースを入れる」
- Google翻訳で「自力の英訳」を和訳。「サービスを利用することが重要な第一歩だと思います。」「そこで、「Google転送」の日常業務を利用して作成しています。」「なぜなら、それはその分野では新しいからです。」「そしてそれを使うのは簡単です。」
- 振り返り(意図した意味になっているか)。とくに2つめの文章がおかしい。”Google転送”は英単語ミス。makeも”作成してます”になっている。
(実践④)google翻訳との対比
- 次に、実践①でプリエディットした日本語をGoogle翻訳で英訳する。
- I think actually using the service is the first and most important step.
- I practice Google Translate as a daily habit.
- Because it is advanced in the AI field, And it’s easy to use.
- 振り返り。自力英訳と比較し、汎用的に使えそうな単語は意識しておく。
- まず”翻訳”は”translate”。次に”日常の習慣にする”はもっとシンプルにするなら”毎日使う”でも良いが、”毎日の習慣として”が”as a daily habit”は覚えておきたい。
- この1文だけやり直すと以下となる。
- 日本語並び替え。「私は、使う、Google翻訳を、日常の習慣として」
- 自力で英訳。「I will use Google translate as a daily habit(またはeveryday)」
- Google翻訳で和訳。「私はGoogle翻訳を毎日の習慣として使用します」
(実践⑤)よりシンプルな表現に整理する
- twitterで練習として投稿することも考えると、より抽象的でシンプルな表現が良い。
- となると、以下くらいの表現が良いだろう。
- I will use Google translation as a daily habit. because it is advanced and useful.
参考書籍
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- データベーススペシャリスト2022年版/三好康之/翔泳社
- おうちで学べるデータベースのきほん/ミック,木村明治/翔泳社
コメント