この2つのSQL文をくみあわせて、0-9歳、10ー19歳、 ..... 90-99歳に分類して、それぞれの年齢分類毎の出発時刻と到着時刻を算出するSQL文を作って下さい。
select household, q0301 from master_b where household like 'P%'; で、(Pで始まる)ユーザ番号と、ユーザの年齢が出てきます。 select household, q0707,q0714 from master_e; で、(Pで始まる)ユーザ番号と、出発時刻(0-24)、と到着時刻(0-24)が出てきます。 この2つのSQL文をくみあわせて、0-9歳、10ー19歳、 ..... 90-99歳に分類して、それぞれの年齢分類毎の出発時刻と到着時刻を算出するSQL文を作って下さい。
以下は、出発時刻 (q0707
) と到着時刻 (q0714
) の 標準偏差 を算出する SQL 文です。標準偏差は STDDEV
関数を使用して計算します。
SELECT
CASE
WHEN b.q0301 BETWEEN 0 AND 9 THEN '0-9歳'
WHEN b.q0301 BETWEEN 10 AND 19 THEN '10-19歳'
WHEN b.q0301 BETWEEN 20 AND 29 THEN '20-29歳'
WHEN b.q0301 BETWEEN 30 AND 39 THEN '30-39歳'
WHEN b.q0301 BETWEEN 40 AND 49 THEN '40-49歳'
WHEN b.q0301 BETWEEN 50 AND 59 THEN '50-59歳'
WHEN b.q0301 BETWEEN 60 AND 69 THEN '60-69歳'
WHEN b.q0301 BETWEEN 70 AND 79 THEN '70-79歳'
WHEN b.q0301 BETWEEN 80 AND 89 THEN '80-89歳'
WHEN b.q0301 BETWEEN 90 AND 99 THEN '90-99歳'
ELSE 'その他'
END AS 年齢分類,
AVG(e.q0707) AS 平均出発時刻,
STDDEV(e.q0707) AS 出発時刻の標準偏差,
AVG(e.q0714) AS 平均到着時刻,
STDDEV(e.q0714) AS 到着時刻の標準偏差
FROM
master_b AS b
JOIN
master_e AS e
ON
b.household = e.household
WHERE
b.household LIKE 'P%'
AND e.q0707 <> 999
AND e.q0714 <> 999
GROUP BY
年齢分類
ORDER BY
年齢分類;
修正点:
- 標準偏差の計算:
STDDEV(e.q0707) AS 出発時刻の標準偏差
STDDEV(e.q0714) AS 到着時刻の標準偏差
- 標準偏差を計算するために、
STDDEV
関数を使用。
- 出力項目:
- 年齢分類
- 平均出発時刻
- 出発時刻の標準偏差
- 平均到着時刻
- 到着時刻の標準偏差
出力例:
pj20005=# \e
年齢分類 | 平均出発時刻 | 出発時刻の標準偏差 | 平均到着時刻 | 到着時刻の標準偏差
----------+---------------------+--------------------+---------------------+--------------------
0-9歳 | 8.7364864864864865 | 2.0264293870576348 | 16.6959459459459459 | 2.7902629433767539
10-19歳 | 8.6916488222698073 | 2.3823202999576382 | 17.5610278372591006 | 3.1068884868890622
20-29歳 | 8.9774436090225564 | 2.7632636644010746 | 17.8020050125313283 | 3.7370800926049844
30-39歳 | 9.0335731414868106 | 2.3690328974486025 | 17.1534772182254197 | 2.9668749279360904
40-49歳 | 9.0164835164835165 | 2.4084051553191729 | 16.9326923076923077 | 3.3338216665822259
50-59歳 | 9.1076555023923445 | 2.7224076287670418 | 17.6854066985645933 | 3.2784704658907816
60-69歳 | 9.7626321974148061 | 2.8109242893099341 | 16.5687426556991774 | 3.1044389062381429
70-79歳 | 10.4559659090909091 | 2.5466884006062182 | 15.2897727272727273 | 3.0459374095847468
80-89歳 | 10.4758454106280193 | 2.4712413371273877 | 15.1835748792270531 | 2.9226415927228037
90-99歳 | 10.0217391304347826 | 2.7260261951824853 | 15.1086956521739130 | 3.3890099517874430
その他 | 8.9574468085106383 | 2.7431827273506346 | 16.6170212765957447 | 3.1146769555086844