0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLで最近気をつけていること

Last updated at Posted at 2018-09-25

#目的
エンジニア?アナリスト?歴2ヶ月目の新卒社員が業務をやっていく中で最近学んだことや気をつけていること、これよく使うなあということを簡単にまとめたもの。備忘録。気がつけば第3弾。
→第1弾の記事はこちら
→第2弾の記事は[こちら]
(https://qiita.com/icchy_sh33p/items/2d64fd79d5e5698d8bcc)

#データ型を一致させ忘れないようにする
時刻や日付は、複数のデータ型で表すことができるため、複数のデータを取り扱ったり、日付のデータで絞込や出力をする場合にはデータ型を統一するよう注意。

##よく使う日付の関数とデータ型

to_char:文字列型
date_trunc:Timestamp型

ほかにもデータ型は種類があるはずだが、自分がよく使っているのは基本このふたつ。

##to_charを使ったデータの取得方法
###今月のデータを取得したい

select 取得したいデータ from 該当するDBのテーブル名 as 整理するときの名前
where to_char(日付のカラム,'yyyy-mm') = to_char(now(), 'yyyy-mm')
  • 'yyyy-mm'は取得するデータの形式なので、日付までほしいときは'yyyy-mm-dd'にすればよい。
    また、now()は現在時刻を取得するためのものなので、何か別の時期のデータがほしい際は、ここを基本いじればよいかも。次はその一例。

###to_charを使用して前月のデータを出す

select 取得したいデータ from 該当するDBのテーブル名 as 整理するときの名前
where to_char(日付のカラム,'yyyy-mm') = to_char(current_timestamp + '-1months', 'yyyy-mm')
  • 日付の計算を使えるのは、基本Timestamp型。なので、現在時刻はcurrent_timestampを使用して、Timestamp型で取得する(ちなみに、now()も同じTimestamp型なので現在時刻を取得する場合は同じ)。
  • 'yyyy-mm'は取得するデータの形式なので、日付までほしいときは'yyyy-mm-dd'にすればよい。

#複数にわたる情報をひとつにまとめる
もともとひとつのデータとして出したかったものが複数行にわたって出力された場合、1行にまとめる必要がある。

cast(sum(case when 条件 then 出力されるデータ1 else 出力されるデータ2 end as データ型)) as 整理するときの名前

これ、個人的には意外と使うこと多いかなって印象。

#文字列型のデータを指定した文字数番めから指定した文字数取得する

substr(string, 何文字めからか, 何文字取得するか)
  • 何文字めからかと、何文字取得するかは、数字のみを入力する

#感想
最近、新しいことに業務内で触ることが多く、なかなかこうして日々業務を通じて学んだことをまとめる時間がなかった(今日はイベントごとがこのあと控えているので久しぶりにこういう整理の時間にまわしてみました)。
少しずつ慣れてきたのか、業務のスピードが早くなったね〜っていっていただいたり、まだこういうことをし始めて間もないこともあって、吸収できることがたくさんあるので、自分のペースで引き続き楽しみつつ学んでいけたらなぁなんて思っております。

次回はちょっと毛色の違うものでも投稿に挑戦してみようかな。ではでは

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?