SQL

Bigquery での日次関数まとめ。

SQL書く際に、検索する手間を省くために、まとめています。 CURRENT_DATE. 現在の日次・タイムスタンプを取得。 EXTRACT. 年,月,日,を分けて抽出。 DATE. 日付を取得 DATE_ADD 日付を加算。 DATE_SUB. 日付を減算。 DATE_TRUNC 日付を切り詰める DATE_DIFF(…

【SQL】SELECTでいらないカラムはexcept()で除外できる。そう、BigQueryならね。

BigQueryでは、クエリしたくないカラムをexcept()で指定すると、 *(XXX)で、早くクエリが書けます。ふつうSQLは、一部のカラムを除外して、抽出というのができない。 クエリするものは明示すべきなので、クエリとしては正しいけど、実務的には、分析する際、…

結合した際のNULLの項目を、0にして集計する。

テストデータです。 t1 t2 すごくテストデータ適当ですが、、、 t1に対して、t2を結合した際、t2であるJOBテーブルは、NULLが発生します。 もしcount(),AVG()で集計する際ですが、集計関数はNULLは対象外となっています。 よって、件数が10だとしても、…

SQLの書き方メモ2

SQLって、基本的な書き方はわかっていても、あの書き方ってどうするんだっけ?みたいになりません? 初心者のためにもコードを書いておこうと思います。もともと自分で書いたものですが、はてぶろにも残しておきます。日次のアクセス数を取得 SELECT DATE(st…

SQLの書き方メモ

獲得所持金が50以上のユーザーだけ表示する。 eventlogテーブルから、userIDの合計の獲得所持金と平均の獲得所持金を表示。さらに、HAVINGを追加して、合計の獲得所持金が100以上のユーザーだけ取得。 SELECT eventlog.userID AS "ユーザーID" ,SUM(events.i…

SQLの条件で、値の最大値で抽出する方法。

WHEREの条件に、date の最大値、つまり、一番最新値を付けたいとき、普通に書こうと思うと、 select * from xxxx where max(date) とやっても、エラーになります。なぜなら、SUMやMAXなどの集計関数はwhereで使えないからです。ではどうすればいいのかという…