2017-02-13 6 views
2

私はこのSQL構文を使用しています。私たちにアクセスするのに利用された情報源の数を示します。数字をカウントではなく百分率で表示したい(100%のうち)。どのように私はパーセントでのカウントを表示するために私の声明を得ることができます、ヘルプDatabasersを提供してください。週と年のパーセンテージを表示

声明:

select coalesce(t2.Source, 'Total') as "Source", 
     coalesce(count(case when Week = date_trunc('week', now())::date - 1 
           then t1."Source" end),0) "This Week", 
     coalesce(count(t1.Source),0) "YTD" 
from infosys t2 
    left join infocentertracker t1 
       ON t1.Source = t2.Source 
       and Week >= DATE '01/01/2017' 
       and Week < DATE '01/01/2018' 
       and Project_ID = 'PCR' 
group by rollup(t2.Source) 

結果:

Source   This Week YTD      This Week  YTD 
Billboard   0   0       0%   0% 
Builder   2   8       20%   12% 
Community Website 0   2       0%   3% 
Drive-by   6   35      60%   52% 
Non-Disclosed  0   1  Requested -->  0%   2% 
Other Website  0   4       0%   6% 
Radio    0   0       0%   0% 
Realtor   1   13      10%   19% 
Resident Referral 1   3       10%   4% 
Return Visitor  0   0       0%   0% 
RPG Website  0   0       0%   0% 
Social Media  0   2       0%   3% 
Total    10   68      100%  100% 
+0

なぜ「by rollup」を使用していますか? – McNets

+0

クエリの下部に合計を表示します。 –

+0

おそらくウインドウ関数が必要です:http://stackoverflow.com/a/6207658/3430807 – Andreas

答えて

2

私はこれが最善の方法であるかどうかわからないけど、あなたが必要な結果を得るために、サブクエリとして既存のクエリを使用することができますMAXウィンドウ機能を使用してパーセンテージで表します。

SELECT Source, 
ROUND(100.0*"This Week"/ MAX(CASE WHEN Source='Total' THEN "This Week" END) OVER(),0)||'%' AS "This Week", 
ROUND(100.0*YTD/ MAX(CASE WHEN Source='Total' THEN YTD END) OVER(),0)||'%' AS YTD 
FROM 
(SELECT COALESCE(T2.Source, 'Total') AS "Source", 
      COALESCE(COUNT(CASE 
          WHEN WEEK = DATE_TRUNC('week', NOW())::date - 1 THEN T1."Source" 
         END),0) "This Week", 
      COALESCE(COUNT(T1.Source),0) "YTD" 
    FROM INFOSYS T2 
    LEFT JOIN INFOCENTERTRACKER T1 ON T1.Source = T2.Source 
    AND WEEK >= DATE '01/01/2017' 
    AND WEEK < DATE '01/01/2018' 
    AND PROJECT_ID = 'PCR' 
    GROUP BY ROLLUP(T2.Source) 
) X 
+0

vkpに感謝します。最初に 't1.Source'を試してみましたが、エラーが出ました。' ERROR:missing FROM-clauseテーブル "t1"のエントリ。どのように私はこれに取り組むことができるかについての任意のアイデア。 –

+0

@Pythoner ..あなたは編集版を試すことができますか? –

+0

私はもう一度編集しました.i 'source'は大文字と小文字を区別します。いずれかの表のその列の正確な大文字と小文字の内側のクエリに応じてそれを修正してください。私は 'Source'を使用しました。 –

関連する問題