乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

SQL

Googleスプレッドシートでは
簡易なデータを取り込んで
SQLを使うことができるようになっています。

今回はそのやり方をご紹介します。

解説動画はこちら




データの取り込み

さてまずはデータを取り込みしてみましょう。

外部からデータを取り込む関数があります。
これでデータを取り込んでみましょう。

スプレッドシートを立ち上げて
シートのA1にこのコードを貼り付けて
実行してみましょう。

=IMPORTDATA("https://gist.githubusercontent.com/michhar/2dfd2de0d4f8727f873422c5d959fff5/raw/fa71405126017e6a37bea592440b4bee94bf7b9e/titanic.csv")
スクリーンショット 2020-10-31 17.26.19

IMPORTDATA("外部データのURL")
で外部データを取り込みできます。


あまり大きなデータは取り込めずに
エラーになってしまうようです。
目安は16000行ほどです。

小さなデータであれば
大丈夫でしょう。





QUERYの実行方法

データが取り込めたら
次はSQLを使う関数です。
QUERY関数でSQLを実行できます。

QUERY(<データ範囲>, "クエリ")

第一引数にデータ範囲を指定します。

クエリの対象データの範囲は
シートの位置を指定します。

今回取り込んだデータが
A:L列まで、892行目までのデータでした。

指定としては A1:L892
で全部を範囲指定できます。

SQLのSELECT文で言う
FROM句に該当します。

第二引数にクエリを書いていきます。


SELECT句

第二引数として指定する
クエリの部分です。

SELECT句の書き方は文を
「"」ダブルクォートで囲みます。

基本は
SELECT 列の位置
です。

列の位置はスプレッドシートの
列の位置を指定してください。

=QUERY(A1:L892 , "SELECT B , C")

このようにすれば
結果はB,Cの列のデータが出力されます。

SurvivedPclass
03
11
13


複数列の場合は「,」カンマで
つなぐことになります。

FROM句はQUERY関数の
第一引数で指定している部分なので
第二引数の所では不要になります。

WHERE句

次にWHERE句です。

条件指定をするところですね。

SELECT句の次に
WHERE句を指定します。
=QUERY(A1:L892, "SELECT D WHERE B = 1 AND E = 'male'")

Name
Williams, Mr. Charles Eugene
Beesley, Mr. Lawrence
Sloper, Mr. William Thompson




条件式の書き方は
通常のSQLと同様です。

列の値が一致するかどうかは = で判定
文字列を比較する場合は
文字列を「'」シングルクォートで囲みます。

数値の比較にはクォートは不要です。

LIKEで文字列の部分一致を
指定することもできます。

=QUERY(A1:L892, "SELECT D WHERE D like'%Mr.%'")

LIKEの後に
一致させたいところを書き
可変部分を % という形で指定します。


GROUP BY句

GROUP BY句はWHERE句の後に
指定をします。

グループ化したい列を指定して
SELECT句で集計関数を
使うことができるようになります。

ここではB列をグループ化して
A列の個数を数えてみます。

=QUERY(A1:L892, "SELECT B, COUNT(A) GROUP BY B")

Survived
count 
0549
1342

このような形で集計結果が出力されます。


PIVOT

PIVOTは機能としても有るようですが
GROUP BYの結果と違って
横に出力させることができます。

グループ化して集計した結果が
列方向に並ぶように出力されます。

=QUERY(A1:L892, "SELECT AVG(F) PIVOT C")
123
38.2334408629.8776300625.14061972



ORDER BY句

ORDER BY は並びかえです。

ORDER BY 並び替えしたい列名

デフォルトでは昇順
降順に並び替えたければ
DESCをつけます。

=QUERY(A1:L892, "SELECT F, COUNT(A) GROUP BY F ORDER BY F")
Age
count PassengerId
177
0.421
0.671
0.752


こんな形で簡易的にですが
スプレッドシートでSQLを
使うことができます。

意外と知られてはいないと思うので
使えると、仕事できる人感が
出るのではないでしょうかwww

是非使ってみてください。
それでは。


今回は知らない人向けに
データベースとSQLについてを
解説してみました。

営業さんや
これから技術を学ぶ人に
むいていると思います。

解説動画はこちら



内容はめちゃくちゃ簡単な内容で
SQLについても詳細な書き方などについては
触れていません。

全く知らない、触れたことがない人向けで
30分ほどあれば読み追われると思います。

さてまず最初はデータベース編です。

30分で理解する データベースとSQL.003

データベースとは何でしょう?

簡単に言うとデータを効率よく
管理するソフトウェアのことです。

表形式のデータを取り扱いするものは
リレーショナルデータベースと呼ばれ
RDBと略されています。

代表的なものとしては
MysqlやOracleなんかがあります。

30分で理解する データベースとSQL.004

データベース界隈の用語としては
データの最小単位として
テーブルというものがあります。

テーブルは表のことで
行列のデータの集まりです。


テーブルには
カラム:列のこと

30分で理解する データベースとSQL.005
ロウ:行のこと
レコードも1件のデータで
行と同じような扱いです。

行列が交わるところはフィールドです。

スキーマはテーブルの構造を
定義したもので
テーブルのカラムには
データ型と言うものがあります。

テーブルをまとめたものはデータセット

データセットをまとめて
データベースと言っていたりします。

30分で理解する データベースとSQL.010


様々なデータ型が存在します。
カラムは何かしら1つのデータ型で統一して
データが格納されています。

主なデータ型としては
文字列型
整数型
小数型
timestamp型
などがあります。

30分で理解する データベースとSQL.011


ここからはSQLの話です。

まずSQLは
リレーショナルデータベースを
操作するための言語です。

テーブルにデータを格納したり
テーブルからデータを抽出したりする際に
使用することができます。

今回は実際にSQLの実行環境などを
紹介しませんので、SQLや
文法の触りだけの紹介になります。

SQLには
DML
DDL
DCL
という3つの系統があり
それぞれにいくつかの文が存在します。


30分で理解する データベースとSQL.014

今回はその中でもよく使われる
DMLについてのみご紹介します。



一番最初はSELECT文からです。

SELECT文はデータを
抽出・参照するための文です。

たくさんの「句」で構成され
順番通りに書いて実行すると
条件に応じた結果が
出力されるというものです。

30分で理解する データベースとSQL.016
基本構成としては
7つの句があります。

1.SELECT句
2.FROM句

3.WHERE句
4.GROUP BY句
5.HAVING句
6.ORDER BY句
7.LIMIT句

上二つは何をどこから
を指定します。

下の5つは
どういう条件で抽出するか
抽出条件を書くところになります。

一番上はSELECT句です。
SELECT句は出力する物を
指定するところで
基本はカラム名を書きます。

複数ある場合は
カンマ「,」でつなぎます。


30分で理解する データベースとSQL.017

出力時はそのカラム名で
出力されますが
AS で別名をつけたりできます。

30分で理解する データベースとSQL.018

FROM句はどこのテーブルから
抽出をするか
テーブル名を書くところです。

30分で理解する データベースとSQL.019

WHERE句は条件指定をする所で
基本的にはカラムの値を条件にして
指定します。

その値に該当する結果が


30分で理解する データベースとSQL.020

GROUP BY句は
指定したカラムの値でグループ化し
そのグループ化したもので
別のカラムの値を集計することができます。

集計には集計関数を用います。


30分で理解する データベースとSQL.021



HAVING句は
GROUP BY句で指定したグループ化後の
集計結果をさらに絞り込む指定を
するところになります。


30分で理解する データベースとSQL.022


ORDER BY句は
並び替えの指定をするところです。

カラムの値で昇順か降順に
並び替えが行われます。

30分で理解する データベースとSQL.023

LIMIT句は単純に
出力行数を制御するところです。


30分で理解する データベースとSQL.024
基本構文の他にも
UNION句
JOIN句
WITH句
などが使えます。

UNION句は
縦に結果をつなげるイメージです。

SELECT文同志を
UNION句でつなげたりします。


30分で理解する データベースとSQL.026

JOIN句は横につなげるイメージで
4通りの指定方法があります。

FROM句の後に
JOIN句でくっつけたいテーブルを指定し
双方にあるデータをキーにして
片方のテーブルにしかないデータを
横につなげることができます。


30分で理解する データベースとSQL.027

30分で理解する データベースとSQL.028

INNER JOINはデフォルトで
双方のテーブルにある
データが結合します。

LEFT JOINは左側に対して
右側にある物をくっつけます。
RIGHT JOINはその逆です。

FULL JOINは全てのデータを
くっつけます。

FROMの後に書いた方が左側
JOIN句に書いたものが右側になります。

WITH句は一時的なテーブルを作成でき
後続のSQLでそのテーブルを利用できます。


30分で理解する データベースとSQL.029



INSERT文はテーブルにデータを追加します。

30分で理解する データベースとSQL.030


UPDATE文はデータの更新を行い
条件指定した行のデータを書き換えます。

30分で理解する データベースとSQL.031

DELETE文はデータの削除を行い
条件指定した行の削除を行います。

30分で理解する データベースとSQL.032

以上
簡単ではありますが
データベースとSQLについて
紹介を行いました。

実際に業務で取り入れる際は
データベースをインストールしたり
実行環境を整備したり
するのが必要になります。

まずはどんなものなのか
知識を蓄えておくと
良いのかなと思います。

今回はここまでです
それでは。


このページのトップヘ