見出し画像

第57回 !Excelで体験!ド初級からのSQL

今後のスケジュールはコチラ
投げ銭ページはコチラ

登壇者:HiroCom777
日時 :2023年3月26日 20時
テーマ:Excelで体験!ド初級からのSQL

今回はハンズオン!当日利用した資料とExcelファイルは末尾にあります。

自己紹介

SQL

データベース/RDB/SQL


ADO

ハンズオン

使用するSQLもテキストに!
なんとツールも提供!

使い方(実践)

まずはファイル選択
青いセルにSQL入力する仕様
SQLテキストの中から青いセルに貼り付け
実行ボタンを押すと結果が表示される。
64bit版でエラーになる場合はここをLongPtrに変更

使い方解説(資料)

SQL_ハンズオン.pptx参照

全ての列を読み込む*
特定の行を指定するWHERE
並べ替えのORDER BY
表示列を指定できる
DB内情報を使って計算、その結果でフィルターもできる。
IIFはADOのSQLで使える関数。結果は文字で返るが、数値に変換する関数もある。
複数のテーブルをくっつけて表示
リレーショナルデータベースの真骨頂
2つのテーブルを総当たりで繋げる交差結合(CrossJoin)。
総当たりが全て表示されてしまうが、実際に有効なデータはIDが一致する行だけ。
そのため実務でこのまま使うことなない。
WHERでIDが一致するものだけを抽出
もっといい方法があるのでこれも実務では使わない。
SQLが長くなる。エイリアスはSQLを短くできるテクニック。
正式にはテーブル名とエイリアスの間にASを書くが今回は省略。
これが実務でも有効なInnerJoin
交差結合の場合は総当たりでデカイテーブルを作成してしまうため効率が悪い。
なのでこっちのほう処理が速い。
3つのテーブルをJoinする場合は一つ目の条件を()で括る
集計関数もある。Countは*を使うことができる。
合計も出来ちゃう!
平均もできちゃう!データがNullのレコードは集計対象外
列名を指定するとNullのデータが対象外になる。
集計した値でWHERE条件指定したい!でもこれはエラーになる!
2項と3項が期待する順序と逆なんだねぇ。
まず最初に全レコードを対象に平均値を集計する。
このように一つの値しか返さないSQLをスカラサブクエリと呼ぶ。
このSQLをWHERE条件として記入する。
このInnerJoinにもサブクエリを使うことができる。
こうすることでテーブルを小さくしたあとにInnerJoinすることで速度向上。
結果をグループ化
HAVINGはGROUP BYの後に使う。
同じ結果になる場合はWHEREで絞るほうが効率が良い。
HAVINGは集計関数も使うことができる。※WHEREは集計関数使えない。
長っ!でもプログラムで集計するより短っ!
LEFT JOIN(LEFT OUTER JOINの略)の場合は、販売実績がない商品も表示する。

ツールの中身 ExcelADO解説

VBE→ツール→参照設定(事前バインディング)
Thisworkbook.Path はマクロファイルがOneDrive上にあるとエラーになるので注意。
ExcelデータをADODBとして接続・SQLで抽出するまでの手順
抽出結果をシートに出力し、接続を閉じる手順

投げ銭・スケジュール

今後のスケジュールはコチラ
投げ銭ページはコチラ

参考サイト

SQLボルト

宣伝

今回の資料(ツール付)

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