9
10

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 3 years have passed since last update.

Redash使う時に、知らなかったSQLの書き方を学びました

Posted at

Redash使う時に、知らなかったSQLの書き方を学びました

概要

最近、redashでsqlを書く機会が多く、こんな書き方があったのかとsqlに関して勉強をしなおしているので、学んだことをここに書きます

目次

  1. Redashとは
  2. 月ごとにデータを表示させたい
  3. 週ごとにデータを表示させたい
  4. 日付指定をする方法
  5. having
  6. case when と or null
  7. データ連携

1. Redashとは

Redashは、SQLの分析結果をわかりやすく可視化し共有するオープンソースBIツールです。

簡単にいうなら、DBのデータやGoogleアナリティクスなどからデータを取得してきて、グラフなどに表示させてくれます
また、定期的に作成したクエリの実行や、slackへグラフの表示など色々と便利なツールです
https://redash.io/

2. 月ごとにデータを表示させたい

月ごとにユーザ数の推移を見たい時に使います

//月ごと
DATE_FORMAT(date,![スクリーンショット 2021-02-13 22.04.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472696/21b04bae-6761-9cb0-170e-dbf57368b5e2.png)
 '%Y-%m')

//group by を使用して月ごとに分ける
group by DATE_FORMAT(date, '%Y-%m') 

3. 週ごとにデータを表示させたい

月ではなくて、もっと細かく週で見たい時に使えます

//週ごと
DATE_FORMAT(consultation_date, '%Y-%U weeks') 

//group by を使用して週ごとに分ける
group by week 

4. 日付指定をする方法

月でも週でもなくて、その時に欲しい値が欲しいから、指定してデータを取得したい場合に使えます

WHERE 
    date >= "{{start_date}}"
   AND date <= "{{end_date}}"

スクリーンショット 2021-02-13 22.05.00.png

5. having

havingはgroup byと一緒に使用します
staff_idでわけて、さらに合計金額が1万円以上に該当する値のみ表示させています

group by staff_id
having sum(money) >= 10000 

6. case whenor null

例えば男女それぞれの人数を出したい時に使えます

select
 case sex
        when 'man' then '男性'
        when 'woman' then '女性'
    end as '性別',
    count(sex) as '人数'
from members
where date >= "2021-02-01"
 group by 性別
 

スクリーンショット 2021-02-13 22.16.09.png

or null を使用しても人数は出すことができます

select
 count(sex = "man" or null) as 男性,
 count(sex = "woman" or null) as 女性
from members
where registration_date >= "2021-02-01"

スクリーンショット 2021-02-13 22.18.31.png

違い

case whenを使用した場合は、同じカラムに値が入っているのでpieチャートを作成することができるのですが、or nullでは、違うカラムに値を出しているのでpieチャートの作成をしてくれないです
スクリーンショット 2021-02-13 22.23.32.png

7. データ連携

このデータ連携はアナリティクスからデータを取得したい時にも活用できますし、1つのクエリでうまく取得ができない時や、gorup byで基準をそれぞれ分けたい時に2つのクエリを作って最終的には1つのグラフに表示させたい時などに活用できます

SELECT
    a.name,
    b.year
FROM query_111 a
LEFT JOIN query_112 b ON b.id = a.staff_id
9
10
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
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?