COUNT(*)=0 を列に表示するのに問題があります。この質問は、ここである程度解決されています。このクエリでカウント値が 0 の行も返すようにするにはどうすればよいですか?
...しかし、解決策を複数の異なるカテゴリに一般化するのに苦労しています。これが私の状況です。駐車場の場所には 11 の異なるカテゴリがあり、所属には 4 つの異なるカテゴリがあります。
# 回答者から DISTINCT parking_location を選択します。
駐車場の場所
------------------
路上無料
都市のガレージ
UCロット
rpp ビジター
路外無料
他の
どこにも
その他有料
メートル
無効
rpp
(11行)
# 回答者から明確な所属を選択します。
所属
-------------
学部
大学生
卒業生
スタッフ
(4行)
私の大学生の回答者は誰も身障者用駐車場を使用していないので、parking_location で数えようとすると、10 行しか返されません。
SELECT parking_location,COUNT(*) FROM 回答者 WHERE affiliation='undergrad' GROUP BY parking_location;
駐車場所 | カウント
------+----------------------
路上無料 | 2
メートル | 25
都市ガレージ | 5
rpp | 21
どこにもない | 1012
UCロット | 33
rpp ビジター | 10
路外無料 | 10
その他 | 10
その他有料 | 12
(10行)
問題ない。前述のリンクは、0 を表示する方法を示しています。
ths=# WITH c as (回答者から DISTINCT parking_location を選択),
ths-# r AS (SELECT affiliation, parking_location, COUNT(*) AS count FROM Answers WHERE affiliation='undergrad' GROUP BY 1,2)
ths-# SELECT c.parking_location, COALESCE(r.count, 0) AS カウント FROM c
ths-# LEFT JOIN r ON c.parking_location = r.parking_location
ths-# ORDER BY parking_location;
駐車場所 | カウント
------+----------------------
どこにもない | 1012
メートル | 25
rpp | 21
rpp ビジター | 10
路上無料 | 2
UCロット | 33
路外無料 | 10
都市ガレージ | 5
その他有料 | 12
無効 | 0
その他 | 10
(11行)
しかし今、学部生だけでなく、すべての所属を表に示したいと思います。さらに、結果のテーブルを最初に所属、次にparking_locationで並べたいと思います。上記の WHERE 句を削除できると思ったのですが、学部生の無効な列が消えてしまいました。
ths=# WITH c as (回答者から DISTINCT parking_location を選択),
ths-# r AS (SELECT affiliation, parking_location, COUNT(*) AS count FROM Answers GROUP BY affiliation,parking_location)
ths-# SELECT r.affiliation, c.parking_location, COALESCE(r.count, 0) FROM c
ths-# LEFT JOIN r ON c.parking_location = r.parking_location
ths-# ORDER BY affiliation,parking_location;
所属 | 駐車場所 | 合体する
---+------------------+----------------------
スタッフ | 都市ガレージ | 34
スタッフ | その他有料 | 50
スタッフ | 無効 | 18
スタッフ | その他 | 61
学部生 | どこにもない | 1012
学部生 | メートル | 25
学部生 | rpp | 21
学部生 | rpp ビジター | 10
学部生 | 路上無料 | 2
学部生 | UCロット | 33
学部生 | 路外無料 | 10
学部生 | 都市ガレージ | 5
学部生 | その他有料 | 12
学部生 | その他 | 10
卒業生 | どこにもない | 1113
卒業生 | メートル | 96
卒業生 | rpp | 31
何か助けはありますか?