[英]postgres count distinct values from multiple column
我正在嘗試顯示 3 列中的所有不同值及其數量。
我的表:
date | col1 | col2 | col3
-------------------------------
26...| a | a | b
25...| c | d | a
...
所有 3 列都具有值 a、b、c、d。
我想要這樣的東西:
date | col | a | b | c | d
--------------------------------------
26.....| col1 | 1 | 0 | 0 | 0
26.....| col2 | 1 | 0 | 0 | 0
26.....| col3 | 0 | 1 | 0 | 0
25.....| col1 | 0 | 0 | 1 | 0
25.....| col2 | 0 | 0 | 0 | 1
有沒有辦法做到這一點?
歡迎來到 SO。 假設可能的值是固定的( a
、 b
、 c
和d
),另一種方法是為CTE
中的每一列和日期創建一行,並在外部查詢中使用FILTER
對它們進行計數,例如
WITH j (date,col) AS (
SELECT date, unnest(array[col1,col2,col3])
FROM mytable
)
SELECT j.date, 'col'||j.col,
count(*) FILTER (WHERE col ='a'),
count(*) FILTER (WHERE col ='b'),
count(*) FILTER (WHERE col ='c'),
count(*) FILTER (WHERE col ='d')
FROM j
JOIN mytable t ON t.date = j.date
GROUP BY j.date,j.col
ORDER BY j.date,j.col;
演示: db<>fiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.