データアナリストのメモ帳

データアナリストのメモ帳

IT企業で働くデータアナリストのブログ

SQL

【SQL】BigQueryで月末の日付を取得する

SQL

SQLで月末の日付を知りたい時の処理です。 2021-05-21 を 2021-05-31にしたいということですね。 DATE_TRUNC と DATE_ADD と DATE_SUB を使うというだけなんですが、一応やり方を残しておきます。 SELECT DATE_SUB(DATE_ADD(DATE_TRUNC('2021-05-21', MONTH)…

【SQL】STRING_AGGで文字列をGROUP BYしてカンマでつなげる【BigQuery】

SQL

複数行にまたがる文字列のレコードを、GROUP BYで1行にまとめる方法です。 文字列をひとまとめにしたい時に便利です。 STRING_AGGを使います。 SELECT gender, STRING_AGG(name, ', ') AS names FROM UNNEST(ARRAY<STRUCT<gender STRING, name STRING>> [ ('male', 'taro'), ('male', 'jiro'), (</struct<gender>…

【SQL】UNIXタイムスタンプを日付に直す方法

SQL

SQLでUNIX時間をタイムスタンプや日付に変換する方法です。 UNIXタイムスタンプとは、1970年1月1日午前0時0分0秒(UTC)からの経過秒数(整数)のことですね。 TIMESTAMP_SECONDS()やDATE()使うことで、UTCタイムスタンプや日付に変換できます。 SELECT TIME…

【SQL】BigQueryでモンテカルロ法を用いて円周率の近似計算をする

SQL

BigQueryで2つの乱数を生成して円周率の近似値を求める方法です。 実用性は無いと思いますが、練習問題にはなるかもしれないですね。 WITH RandomValue AS ( SELECT num, RAND() AS rand1, RAND() AS rand2, FROM UNNEST(GENERATE_ARRAY(1, 1000000)) AS num…

【SQL】BigQueryで素数の列を生成してみる

SQL

暇だったのでBigQueryで1000以下の素数の列を作りました。 素数の列がほしい時に使ってください。 NOT EXISTを使うのがポイントです! WITH Numbers AS ( SELECT num FROM UNNEST(GENERATE_ARRAY(1, 1000)) AS num ORDER BY num) SELECT N1.num AS primeNumb…

【SQL】BigQueryで日付の列を生成する方法

SQL

指定した日付から本日までの日付の列を生成する方法です。 日付が歯抜けになっているテーブルとJOINしたいときや、日付のマスタを作る際に使えそうです。 ▼Query -- 指定した日付から本日までの日付の列を生成する WITH DateRange AS( SELECT jpDate FROM UN…

【SQL】BigQueryで昨日の日付を取得する方法

SQL

今日の日付を取得する方法を覚えていても、昨日となると忘れがち。 SELECT DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 1 DAY) AS yesterday