2011-09-13 16 views
0

我只有1列。我需要了解它的價值觀和他們的使用統計:如何在表中選擇不同的值及其用法?

Value | Count 
----------------- 
NULL | 41 (91%) 
'' | 3 (3%) 
'FOO' | 2 (2%) 
'BAR' | 1 (1%) 

此外,我需要爲數據庫中的每一列進行這樣的查詢。有用來幫助我處理這些報告的工具嗎?我問了Postgresql/Mysql。

+0

以下代碼僅顯示錶I的第一列(以隨機順序)需要: SELECT DISTINCT ColumnName FROM TableName; – FirstTimePoster

回答

0
select value , count(*) from table 
group by value 

更換table爲你的表名和value爲您的列名

隨着百分比:

select value 
,count(*) 
,COUNT(*)/(select cast(COUNT(*) as decimal) as Total from table) as Usage 
from table 
group by value 
+0

該死的,太容易了!我對DISTINCT有所感觸,虛擬表/連接對於這項任務來說是過分的。 – FirstTimePoster

0

公用表表達式救援(PostgreSQL的9測試):

WITH a AS (SELECT COUNT(*) AS max FROM t) 
SELECT v, COUNT(v), (COUNT(v)::FLOAT/a.max) * 100 
    FROM t, a 
GROUP BY v, a.max 
ORDER BY COUNT(v) DESC; 
+0

它的工作原理!謝啦! – FirstTimePoster

+0

CTE(WITH ...)的優點在於,該計數只能運行一次。 –

相關問題