#Table
CREATE TABLE
###table2と同じ構造のtable1を作る
CREATE TABLE table1 LIKE table2;
##ALTER TABLE
###テーブル名の変更
table_nameをnew_table_nameに変更する
ALTER TABLE table_name RENAME TO new_table_name;
#SELECT
##文字列操作
###文字の結合
区切り文字を入れない場合の文字結合(CONCAT)。
引数にNULLが1つでも来ると、結合した文字列もNULLになる。
SELECT CONCAT(string_a, string_b, ...) FROM table_name;
###SPLIT
指定のデリミタで、カラムを配列に変換する。index_numberは0始まり。
SELECT SPLIT(column_name, 'delimiter')[index_number] FROM table_name;
##条件式(WHERE句)
###LIKE
search_wordでワイルドカードを使いたい場合は「%」を使う
SELECT * FROM table_name WHERE column_name LIKE 'search_word';
WITH
WITHを使うとサブクエリを利用せずにSELECTの結果をテーブルの様に扱える。同じSQL内で何度もSELECT結果を利用する場合に便利。
WITH tmp_table_1 as (
SELECT
*
FROM table_name
)
SELECT * FROM tmp_table_1
WITHで複数のテーブルを定義することもできる。
WITH tmp_table_1 as (
SELECT
*
FROM table_name
),
tmp_table_2 as (
SELECT
*
FROM table_name
)
SELECT *
FROM tmp_table_1 a
JOIN tmp_table_2 b
ON a.col_name == b.col_name
#INSERT
###SELECTした結果を保存する
INSERT OVERWRITE TABLE insert_table_name
SELECT [column_name ...] FROM select_table_name
#LOAD
###ファイルのデータを、テーブルに上書き保存する
LOAD DATA LOCAL INPATH 'file_path' OVERWRITE INTO TABLE table_name;
SQL内の変数(hivevar)
SET hivevar:begin_date=2019-01-01;
SET hivevar:end_date=2019-01-31;
select * from table_name
where col_name between ${hivevar:begin_date} and ${hivevar:end_date}