SQLの書き方メモ

獲得所持金が50以上のユーザーだけ表示する。
eventlogテーブルから、userIDの合計の獲得所持金と平均の獲得所持金を表示。

さらに、HAVINGを追加して、合計の獲得所持金が100以上のユーザーだけ取得。

SELECT 
 eventlog.userID AS "ユーザーID"
   ,SUM(events.increase_gold) AS "合計"
   ,AVG(events.increase_gold) AS "平均" 
FROM eventlog 
INNER JOIN events ON events.eventID = eventlog.eventID 
GROUP BY eventlog.userID 
HAVING SUM(events.increase_gold) >= 100;

2つの日時の差を求める

目的の期間までの日数を出したりなど、必ず書かなければならないコードですね。

#現在の日時を求める 
CURRENT_DATE() AS  today #現在日時 2021-10-01
play_date  #2021-10-06
#2つの日時の間の期間を整数で求める 
SELECT
DATE_DIFF(YEAR, (play_date, today, day)  as days_diff

+-----------+
| days_diff.|
+-----------+
| 5         |
+-----------+

差を日で見る場合はdayを。週でみたいなら、WEEKを、ていうふうに変えていきます。

あとこのサイトも参考になりそう。

https://qiita.com/redpanda/items/85c3f83ba95add333b5d

https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions?hl=ja