簡體   English   中英

查詢返回每列中每個值的不同計數

[英]query that returns distinct count of each value in each column

我正在尋找查詢結構像這樣的表

A B C D E
1 1 1 1 1
2 2 1 1 2
2 2 2 1 3
4 4 5 5 5

像這樣查看column_name,distinct_value_in_column,count_of_distinct_value

A 1 1
A 2 2
A 4 2
B 1 1
B 2 2
B 4 1
C 1 2
C 2 1
C 5 1
D 1 3
D 5 1
E 1 1
E 2 1
E 3 1
E 5 1

最終,我想按降序排序,但是這種結構令我感到困惑。 通常可以在SQL中完成嗎? 我正在使用一個postgresql實例,如果有影響的話。

我在用偽代碼設想

select column_names, distinct a, b, c, d, e, count (`distinct a, b, c, d, e) as ct
from table
group by column_names
order by ct desc

當然。 首先使用UNION堆疊數據。

select
    col,
    val,
    count(*)
from
    (
        select
            'A' as col,
            a as val
        from
            table
        union all select
            'B' as col,
            b as val
        from
            table
        union all select
            'C' as col,
            c as val
        from
            table
        union all select
            'D' as col,
            d as val
        from
            table
        union all select
            'E' as col,
            e as val
        from
            table
    )
group by
    col,
    val
order by
    count(*) desc;

您可以使用以下查詢:

SELECT col, val, count(*)
FROM (
  SELECT unnest(array['A','B','C','D','E']) AS col,
         unnest(array[A,B,C,D,E]) AS val
  FROM mytable) AS t
GROUP BY col, val

在這里演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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