Cloud Datastudioで年代別に処理をする際、下記のように年齢を5刻みのにして出しているのがあって、もっと短くしたくなったのでやってみた。
SELECT case when age>= 10 and age < 15 then '10-14' when age>= 15 and age < 20 then '15-19' when age>= 20 and age <25 then '20-24' when age>= 25 and age <30 then '25-29' when age>= 30 and age <35 then '30-34' when age>= 35 and age <40 then '35-39' when age>= 40 and age <45 then '40-44' when age>= 45 and age <50 then '45-49' when age>= 50 and age <55 then '50-54' when age>= 55 and age <60 then '55-59' when age>= 60 and age <65 then '60-64' when age>= 65 and age <70 then '65-69' when age>= 70 and age <75 then '70-74' when age>= 75 and age <80 then '75-79' when age>= 80 and age <85 then '80-84' when age>= 85 and age <90 then '85-89' when age>= 90 and age <95 then '90-94' when age>= 95 and age <100 then '95-99' else 'その他' end as ages FROM member
SELECT age, INTEGER(FLOOR(age/5) * 5) as age1, CONCAT( STRING(INTEGER(FLOOR(age/5) * 5 )), '-', STRING(INTEGER(FLOOR(age/5) * 5 ) + 4 )) as age2 FROM member LIMIT 1000
〇歳以上●歳以下の表示がちょっとてこずったけど、できてみるとシンプルだった。
Row age age1 age2 1 56 55 55-59 2 36 35 35-39 3 47 45 45-49 4 52 50 50-54 5 40 40 40-44 6 60 60 60-64 7 47 45 45-49 8 47 45 45-49 9 47 45 45-49 10 47 45 45-49
20代、30代のような10歳刻みであれば10で割って、floorして、10倍するだけでできる
SELECT age, FLOOR(age/10) * 10, CONCAT(STRING(INTEGER(FLOOR(age/10) * 10)), "代") FROM member LIMIT 1000
Row age f0_ f1_ 1 56 50.0 50代 2 36 30.0 30代 3 47 40.0 40代 4 52 50.0 50代 5 40 40.0 40代 6 60 60.0 60代