段階的なプロセスのさまざまな段階にある人々がいる場所がたくさんあります。各ステップの人数を場所ごとに報告し、次にすべての場所の合計を報告できるようにしたいと考えています。私のデータは次のようになります(歩数表)
| ID | STEP_NUM | LOCATION ID |
-------------------------------
| 1 | 1 | 10 |
| 2 | 1 | 12 |
| 3 | 2 | 4 |
| 4 | 1 | 5 |
| 5 | 1 | 6 |
| 6 | 1 | 3 |
| 7 | 3 | 3 |
このスタックオーバーフローの質問と回答 (s) Postgresql Multiple counts for one tableは非常に役に立ち、場所ごとに要約を取得しました。これが私の現在のクエリです:
SELECT locations.name,
sum(case when step_num = 1 then 1 end) as Beginner,
sum(case when step_num = 2 then 1 end) as Intermediate,
sum(case when step_num = 3 then 1 end) as Expert
FROM steps
INNER JOIN locations ON steps.location_id = locations.id
GROUP BY locations.name
ORDER BY locations.name ASC
すべての場所の合計を返すにはどうすればよいですか? たとえば、結果を取得したいと思います。
| LOCATION NAME | Beginner | Intermediate | Expert |
----------------------------------------------------
| Uptown | 5 | | 1 |
| Downtown | 2 | 1 | 3 |
| All locations | 7 | 1 | 4 |