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
何か助けはありますか?