この記事はZOZOテクノロジーズ #1 Advent Calendar 2019 18日目の記事になります。
また、今年は全部で5つのAdvent Calendarが公開されています。
ZOZOテクノロジーズ #2 Advent Calendar 2019
ZOZOテクノロジーズ #3 Advent Calendar 2019
ZOZOテクノロジーズ #4 Advent Calendar 2019
ZOZOテクノロジーズ #5 Advent Calendar 2019
概要
皆さんはGoogleスプレッドシート上でSQLを使ってテーブル(表)から別のテーブルを生成できることはご存知でしょうか。
本記事では、Googleスプレッドシート上でのSQLの使い方をご紹介します。
また実際にSQLを使って役に立ったテーブルの縦横変換についてご紹介します。
QUERY関数
QUERY Functionを利用することでGoogleスプレッドシートでSQLを利用することができます。
例えば以下のような「商品」シートのテーブルから、12月以降に発売された商品を価格順に並び替えたテーブルを作成してみます。
クエリ
別のシートで以下のようにQUERY Functionの中にSQLを書いてやることで、SQLの結果のテーブルが生成されます。
=Query('商品'!A:C,"select A, B, C where C >= date '2019-12-01'")
結果
クエリの結果以下のような表が生成されました。期待通りの結果になっていますね。
縦横変換
続いて以下のような家事管理テーブルから、誰がどのくらいどの家事をやっているかといった積み上げグラフを作りたいというケースについて考えます。
積み上げグラフを作るにはタスクの種類と時間で縦横変換をしてやる必要があります。
クエリ
以下のようにgroup by
の中でpivot
を利用することで、縦横変換ができます。
=Query('家事'!A:C,"select A,sum(C) group by A pivot B")
結果
以下のように種類・時間についての縦横が変換された表が生成されました。
グラフの生成
以上の表から実際にグラフを生成したものが以下になります。
このグラフから、お父さんが全然家事をやっていないことがわかります。
この結果を利用すれば家族会議でお母さんがやっている家事をお父さんにやってもらうということが約束できそうですね。
まとめ
以上のようにQUERY関数を利用することでGoogleスプレッドシートでSQLを利用できるということを紹介しました。
またgropup by
のなかでpivot
を利用することで簡単に縦横変換ができることを紹介しました。
明日は@pkinoさんです。