10. ②検索結果に売上情報の顧客タイプ列を追加する
実践編
SELECT syosekimei, kankobi,customer_type
FROM `micro-primer-228908.sample_3.shoseki_table`
LEFT OUTER JOIN `micro-primer-228908.sample_3.sales_result`
ON `micro-primer-228908.sample_3.shoseki_table`.syosekimei
= `micro-primer-228908.sample_3.sales_result`.shosekimei
WHERE sub_genre = 102;
▼LEFT OUTER JOINの構文
SELECT カラム名1, カラム名2, ...,
FROM テーブルA
LEFT OUTER JOIN テーブルB ON 結合の条件
11. ③売上情報と書籍情報に別名を付ける
実践編
SELECT syosekimei, kankobi,customer_type
FROM `micro-primer-228908.sample_3.shoseki_table` AS t1
LEFT OUTER JOIN `micro-primer-228908.sample_3.sales_result` AS t2
ON t1.syosekimei = t2.shosekimei
WHERE sub_genre = 102;
FROM 表の名前 AS 別名
または
FROM 表の名前 別名
*ASは省略可能である。
表の別名指定の記述形式
12. ④売上金額と伝票件数の列を追加
実践編
SELECT syosekimei,kankobi,customer_type
,SUM(amount) AS amount,COUNT(bill_no) AS count
FROM `micro-primer-228908.sample_3.shoseki_table` t1
LEFT OUTER JOIN
`micro-primer-228908.sample_3.sales_result` t2
ON t1.syosekimei = t2.shosekimei
WHERE sub_genre = 102
GROUP BY syosekimei,kankobi,customer_type;
GROUP BY句に集計
単位を記述する
syosekimei kankobi customer_type amount count
Perfect Ruby ver2.0 2017/5/17 engineer 55420 1
0 kara hajimeru Ruby 2017/7/28 null null 0
Perfect Ruby ver2.0 2017/5/17 student 3260 1
Perfect Ruby ver2.0 2017/5/17 unknown 6520 2
▼検索結果
39. SELECT *
FROM `bubbly-fuze-222610.sample_3.shoseki_table`
WHERE kakaku >= 2000
AND kakaku <= 2500 ;
SELECT *
FROM `bubbly-fuze-222610.sample_3.shoseki_table`
WHERE kakaku BETWEEN 2000 AND 2500 ;
同じ
データの取得
WHERE句にBETWEEN句を指定すると、
範囲指定ができます。
以上、以下という指定になる点を注意してください。
51. MAX関数、MIN関数、AVG関数、ROUND関数
SELECT sub_genre ,
MAX(kakaku) AS max_price,
MIN(kakaku) AS min_price,
ROUND(AVG(kakaku),1) AS avg_price
FROM `bubbly-fuze-222610.sample_3.shoseki_table`
GROUP BY sub_genre;
データの集約
syosekimei sub_genre kakaku
python crawling 0103 3200
Perfect Ruby ver2.0 0102 3260
Perfect Ruby ver3.0 0102 3800
sub_genre max_price min_price avg_price
0103 3200 3200 3200.0
0102 3800 3260 3530.0
52. データの集約
SELECT sub_genre ,
ROUND(AVG(kakaku),1) AS avg_price
FROM `bubbly-fuze-222610.sample_3.shoseki_table`
GROUP BY sub_genre
HAVING AVG(kakaku) > 2800;
sub_genreごとの価格の平均値を求め、
平均が2800より大きいデータをHAVINGで絞り込む
HAVING句を使うと集約後データに対し絞り込みを行え
ます。WHERE句と合わせて使うこともできます。