LoginSignup
15
1

More than 3 years have passed since last update.

Googleスプレッドシートの縦横変換をSQLでおこなう

Last updated at Posted at 2019-12-17

この記事は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月以降に発売された商品を価格順に並び替えたテーブルを作成してみます。

shohin.png

クエリ

別のシートで以下のようにQUERY Functionの中にSQLを書いてやることで、SQLの結果のテーブルが生成されます。

=Query('商品'!A:C,"select A, B, C where C >= date '2019-12-01'")

結果

クエリの結果以下のような表が生成されました。期待通りの結果になっていますね。

sorted_shohin.png

縦横変換

続いて以下のような家事管理テーブルから、誰がどのくらいどの家事をやっているかといった積み上げグラフを作りたいというケースについて考えます。
積み上げグラフを作るにはタスクの種類と時間で縦横変換をしてやる必要があります。

kaji.png

クエリ

以下のようにgroup byの中でpivotを利用することで、縦横変換ができます。

=Query('家事'!A:C,"select A,sum(C) group by A pivot B")

結果

以下のように種類・時間についての縦横が変換された表が生成されました。

pivoted_kaji.png

グラフの生成

以上の表から実際にグラフを生成したものが以下になります。
このグラフから、お父さんが全然家事をやっていないことがわかります。
この結果を利用すれば家族会議でお母さんがやっている家事をお父さんにやってもらうということが約束できそうですね。

kaji_graph.png

まとめ

以上のようにQUERY関数を利用することでGoogleスプレッドシートでSQLを利用できるということを紹介しました。
またgropup byのなかでpivotを利用することで簡単に縦横変換ができることを紹介しました。

明日は@pkinoさんです。

15
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
1