3

テーブル内のすべての列、その列に入力されたレコードの数とパーセンテージ、および個別の値の数を表示するステートメントを作成する必要があります。

たとえば、以下を含むテーブル Address があるとします。

Addr1 | AddrText  | PostalCode
11111 | demo ave  | 91210
22222 | demo2 ave | null
33333 | null      | null

次のように表示されます。

columns    | Count | Percentage
Addr1      | 3     | 100
AddrText   | 2     | 66.6
PostalCode | 1     | 33.3

または、列を同じままにして、データのみを行として配置しますが、上記の方が簡単かもしれないと考えました。

ps: 書式が正しくない場合は申し訳ありませんが、ご理解いただければ幸いです。

4

2 に答える 2

3

集計関数を使用して列のピボットを解除しUNION ALL、集計関数を適用して、カウントとパーセンテージを取得できます。

select col,
  count(case when col is not null and value is not null then 1 end) CntCol,
  (count(case when col is not null and value is not null 
         then 1 end) / count(col))*100.0 Percentage
from
(
  select 'Addr1' col, Addr1 value
  from yourtable
  union all 
  select 'AddrText' col, AddrText value
  from yourtable
  union all 
  select 'PostalCode' col, PostalCode value
  from yourtable
) src
group by col

デモで SQL Fiddle を参照してください

結果は次のとおりです。

|        COL | CNTCOL | PERCENTAGE |
------------------------------------
|      Addr1 |      3 |        100 |
|   AddrText |      2 |   66.66667 |
| PostalCode |      1 |   33.33333 |
于 2013-01-17T00:58:54.940 に答える
0
SELECT 'Addr1' col, 
       COUNT(Addr1) cntcol, COUNT(addr1)/count(*) percentage
FROM yourtable
union all
SELECT 'AddrText' col, 
       COUNT(AddrText) cntcol, COUNT(AddrText)/count(*) percentage
FROM yourtable
union all
SELECT 'PostalCode' col, 
       COUNT(PostalCode) cntcol, COUNT(PostalCode)/count(*) percentage
FROM yourtable
于 2013-01-17T01:05:04.373 に答える