場所分雷-復習2

2808 ワード

Amazon Redshiftの無料2ヶ月体験バージョンがあるので使用中です.
PostgreSQLを使用する予定でしたが、不明なエラーのため一時保存します.

接続文字列



次の表に文字列を接続します.
SELECT user_id
     , CONCAT(pref_name, city_name) AS pref_city
     , pref_name || city_name AS pref_city
  FROM mst_user_location

2行目と3行目は同じ値をエクスポートします.
CONCAT:複数の文字列を結合します.PostgreSQLとRedshiftは、||を使用して同じ値を抽出することもできます.

複数の値の比較



レコード内の複数の値を比較する方法について説明します.
SELECT year
     , q1
     , q2
     , CASE WHEN q1 < q2 THEN '+'
            WHEN q1 = q2 THEN ' '
            ELSE '-'
            END AS judge_q1_q2
     , q2-q1 AS diff_q2_q1
     , SIGN(q2-q1) AS sign_q2_q1
  FROM quarterly_sales
  ORDER BY 1

CASE関数を用いて,第1四半期と第2四半期の比較を行った.
SIGN関数によりCASE式よりも値の増減判定を簡単に行うことができる.SIGN関数の戻りパラメータは、正の値が1、0の値が0、負の値が-1です.
SELECT year
     , GREATEST(q1, q2, q3, q4) as greatest_sales
     , LEAST(q1, q2, q3, q4) as least_sales
  FROM quarterly_sales
  ORDER BY 1

GREATEST、LEAST関数は標準SQLには含まれませんが、ほとんどのSQLクエリーエンジンで実装されます.
SELECT year
     , (COALESCE(q1, 0) + COALESCE(q2, 0) + COALESCE(q3, 0) + COALESCE(q4, 0))
       / (SIGN(COALESCE(q1, 0)) + SIGN(COALESCE(q2, 0)) + SIGN(COALESCE(q3, 0)) + SIGN(COALESCE(q4, 0))) AS average
  FROM quarterly_sales
  ORDER BY year

これは各年度の平均四半期の売上高の照会です.COALESCEは、Null値をどの値に戻すかを指定する関数です.

2つの値のパーセントを計算


SELECT dt
     , ad_id
     , CAST(clicks AS double precision)/impressions AS ctr
     , 100.0 * clicks / impressions AS ctr_as_percent
  FROM advertising_stats
  WHERE dt = '2017-04-01'
  ORDER BY dt, ad_id

CTR(Click Through Rate)を取得するクエリーです.
CAST関数を用いてクリック数を「二重精度」データ型に変換して計算すると,小数点第2位になる.
SELECT dt
     , ad_id
     , CASE WHEN impressions >0 THEN 100.0 * clicks / impressions
            END AS ctr_as_percent_by_case
  FROM advertising_stats
  ORDER BY dt, ad_id

除数がゼロになるのを防ぐためにCASE関数を用いた.