簡體   English   中英

postgres 計算來自多列的不同值

[英]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。 假設可能的值是固定的( abcd ),另一種方法是為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM