データベーススペシャリスト資格|2022年10月挑戦ログ 5月15日|SQLによる仮想テーブルの作成(with句の実践)

高度IT・基礎知識

この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。

今回は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年版/三好康之/翔泳社
  • おうちで学べるデータベースのきほん/ミック,木村明治/翔泳社

コメント

タイトルとURLをコピーしました