将每行仅嵌套一个重复值

时间:2019-08-30 23:15:27

标签: sql postgresql

我有下表-

ID    A1     A2     A3     A4     A5      A6
1    324    243    3432   23423  342     342
2    342    242    4345   23423  324     342

我可以取消嵌套此表,以便给我所有数字的计数-

324     2
243     1
3432    1
23423   1
342     3
242     1
4345    1
23423   1    

但是我如何才能只对同一行中的数字进行1次计数。例如,这是我期望的输出-

324     2
243     1
3432    1
23423   1
342     2 
242     1
4345    1
23423   1   

3422,因为-

1)在第一行。

2)它在第二行中出现2次,但我只想计数一次。

1 个答案:

答案 0 :(得分:0)

只需使用count(distinct)

select v.a, count(distinct t.id)
from t cross join lateral
     (values (a1), (a2), (a3), (a4), (a5), (a6)
     ) v(a)
group by v.a;

Here是db <>小提琴。