2016-03-16 31 views
0

我認爲我的問題與this one相同,但它並不清楚,所以我不在尋找答案。如何在postgresql中爲每列獲取不同的值和他們的計數

我有一個由70列和大約一百萬行osm2pgsql構建的表。在70列中,每行只有2個值(其中一個是具有索引的地理位置),其餘的則形成稀疏矩陣。

我把這個fiddle簡化版的我有什麼和我想要的。 這裏有一點解釋:每列的每個值都有自己的計數,並且每列也都有它的計數,其中一個NULL值表示它是列計數。

+0

給定SQL FIDDLE數據的期望結果是什麼? – java

+0

存儲在expected_result中的一個! – Borbag

+0

@sagi得到了什麼是想要的結果,看到他的反應 – Borbag

回答

0

我來了部分響應:

SELECT string_agg(
    'SELECT ' || 
     '''' || quote_ident(attname) || ''' as column_name, ' || 
     quote_ident(attname) || '::text as value_name, ' || 
    ' count(*) as value_count' || 
    ' FROM ' || attrelid::regclass || 
     -- ' WHERE ' || quote_ident(attname) || ' is not NULL' || 
    ' GROUP BY ' || quote_ident(attname) || ' ', 
    'UNION ALL ') 
FROM pg_attribute 
WHERE attrelid = '<my_table_name>'::regclass 
AND attnum >= 1   -- exclude tableoid & friends (neg. attnum) 
AND attisdropped is FALSE -- exclude deleted columns 
GROUP BY attrelid; 

感謝that thread。 當value_name爲NULL時,我仍然必須得到正確的值,但我非常接近。

相關問題