SELECT id, week, SUM(quantity) AS quantity, SUM(price) AS price FROM dataset.table ORDER BY 1, 2
上記の、week項目はstring型のため、order by すると以下のように並び替えられてしまうため、BIツールなどでも微妙な並びになる。
| id | week | quantity | price |
|---|---|---|---|
| A01 | 土 | 100 | 100000 |
| A01 | 日 | 200 | 200000 |
| A01 | 月 | 300 | 300000 |
| A01 | 木 | 400 | 400000 |
| A01 | 水 | 500 | 500000 |
| A01 | 火 | 600 | 600000 |
| A01 | 金 | 700 | 700000 |
あんまり綺麗ではないが、以下のクエリで並び替えの対応を行う。
SELECT
id,
week,
SUM(quantity) AS quantity,
SUM(price) AS price
FROM
dataset.table
ORDER BY
1,
-- 並びを曜日順にする為のコード
CASE
WHEN week = '日' THEN 1
WHEN week = '月' THEN 2
WHEN week = '火' THEN 3
WHEN week = '水' THEN 4
WHEN week = '木' THEN 5
WHEN week = '金' THEN 6
WHEN week = '土' THEN 7
END
string型のweek項目に擬似的に数値情報を与えてorder by することで曜日を綺麗に並び替える
| id | week | quantity | price |
|---|---|---|---|
| A01 | 日 | 200 | 200000 |
| A01 | 月 | 300 | 300000 |
| A01 | 火 | 600 | 600000 |
| A01 | 水 | 500 | 500000 |
| A01 | 木 | 400 | 400000 |
| A01 | 金 | 700 | 700000 |
| A01 | 土 | 100 | 100000 |


