付録一 計算式
10.1 文字の計算
1.文字列を連結:concat();
複数の文字列を一つに合併,例えば:concat('こんにちは', '%%'),結果は こんにちは%%
2.空白を削除:trim();
文字列先頭と末尾の空白を削除,例えば:trim(' リンゴ '), 結果は リンゴ
3.テキストを取得:substring();
指定した位置空間にある文字を切り取る,例えば:substring('こんにちは、可視化分析!', 4, 5),結果は 可視化 ; substring('こんにちは、可視化分析!', 4) 結果は 可視化分析!
4.文字を入れ替え:replace();
文字列の中の特定文字を入れ替える,例えば:replace('チャート分析', 'チャート', '可視化') 結果は 可視化分析
5.アルファベットを大文字に:upper();
文字列の中のアルファベットを全部大文字に変換
6.アルファベットを小文字に:lower();
文字列の中のアルファベットを全部小文字に変換
10.2 数値の計算
加算:+;
数値の加算
減算:-;
数値の減算
掛け算:*;
数値の掛け算
割り算:/;
数値の割り算
余りを取得:%;
数値の割り算で余りを取得
絶対値を取得:abs();
数値の絶対値,例えば:abs(-10.2), 結果は 10.2
四捨五入:round();
数値を四捨五入して整数にする,例えば:round(10.2), 結果は10
切り上げ:floor();
指定した数値以下の最小整数を取得,例えば: floor(10.2) , 結果は 10
切り捨て:ceil();
指定した数値以上の最小整数を取得,例えば: ceil(10.2) , 結果は 11
10.3 時間の計算
假设:时间字段 [t1].[time] 的值为:2015-10-29 12:52:10
年を取得:year();
指定した日付から年の値を取得,例えば:文字列 [t1].[time] が含む日付は2015年10月29日,year([t1].[time])が対応したデータ結果は2015
月を取得:month();
指定した日付から月の値を取得,例えば:文字列 [t1].[time] が含む日付は2015年10月29日,month([t1].[time])が対応したデータ結果は10
日を取得:day();
指定した日付から日の値を取得,例えば:文字列 [t1].[time] が含む日付は2015年10月29日,day([t1].[time])が対応したデータ会結果は29
四半期を取得:quarter();
指定した日付が対応している四半期を取得(1-3月は第1四半期、 4-6月は第2四半期、これによって類推),例えば:文字列 [t1].[time] が含む日付は2015年10月29日,quarter([t1].[time])が対応したデータ結果は4
週数を計算:week();
指定した日付が対応している年度の週数,例えば:文字列 [t1].[time] が含む日付は2015年10月29日,week([t1].[time])が対応したデータ結果は43
週の日付を計算:weekday();
指定した日付が対応している週の曜日,例えば:文字列 [t1].[time] が含む日付は2015年10月29日,weekday([t1].[time])が対応したデータ結果は4
時を取得(24h):hour();
指定した日付の時の値を取得,例えば:文字列 [t1].[time] が含むデータ時間は 12:52:10,hour([t1].[time])が対応したデータ結果は12
分を取得:minute();
指定した日付の分の値を取得,例えば:文字列 [t1].[time] が含むデータ時間は 12:52:10,minute([t1].[time])が対応したデータ結果は52
秒を取得:second();
指定した日付の秒の値を取得,例えば:文字列 [t1].[time] が含むデータ時間は 12:52:10,second([t1].[time])が対応したデータ結果は10
Unix時間を変換:epochTime();
Unix epochで表示する時間の値(単位は秒)をタイムスタンプに変換,例えば: epochTime(1481708268) 結果は北京時間2016年12月14日17時37分48秒(+8:00 タイムゾーン)
10.4 関連の計算
に等しい:==;
両方が等しいかを判断
に等しくない:!=;
両方が等しくないかを判断
より大きい:>;
前者が後者より大きいかを判断
より小さい:<;
前者が後者より小さいかを判断
以上:>=;
前者が後者以上であるかを判断
以下:<=;
前者が後者以下であるかを判断
テキストをマッチング(SQL):like();
テキストが指定のフォーマットにマッチしているかを判断,例えば:like("可視化分析", "%分析"),結果は真
10.5 ロジック計算
論理積:&&;
論理積(両方がみんな真である時、結果は真),例えば:true && false,結果は false
論理和:||;
論理和(両方の片方が真である時、結果は真),例えば:true || false,結果は true
否定:!;
否定,例えば:! true,結果は false
論理値:case();
一つずつ論理判断し、ある判断結果が真である時、それに対応した結果の値を得る。すべては真でない場合、結果は最後の値になる。例えば:case([t1].[score] < 60, "不及格", [t1].[score] >= 60, "及格", [t1].[score] == 100, "优秀","良好")
マッチ値:decode();
一つ目の値を取得し、それ以降の値と一つずつコンペアする。ある値と等しい場合、対応した値を得る。等しい値が存在しない場合、結果は最後の値になる。例えば:decode([t1].[region], 0, "東北", 1, "華北", 2, "華東", 3, "華中", 4, "華南", 5, "西北", 6, "西南", "その他")
10.6 集合の計算
和を求め:sum();
カウント:count();
重複を除くカウント:count_distinct();
平均値:avg();
最大値:max();
最小値:min();