2012-04-13 10 views
-1

というテーブルがあります。URP_PROJECTという名前のカラム、という名前のカラム、ts_titleという名前のカラムがあります。列ts_titleの下に異なるレコードデータがあります。 の下の各レコードを計算する方法ts_titleパーセント列は、以下のSQLクエリに従って追加されます。SQL - パーセンテージ数

は私がして起動します。ありがとう、

は私がそれを続けるヘルプ割合として

SELECT ts_title

COUNT(ts_title)

+1

どのデータベースにMS SQL Server、MySQL、Oracleを使用していますか? –

+0

MS SQL Server 2008 – Mohan

+0

SSRS - SQL Serverレポートサービス – Mohan

答えて

1

これはあなたが

探しているものをあなたに与えること
select ts_title, 
     count(1) * 100.0/(select count(1) from upr_project) 
from upr_project 
group by ts_title 

逓倍時間100.0はafに変換されますより正確なパーセンテージを得るためにはうんざりです。

+0

ありがとう! %で助けられたfloatに変換すると、100になります。 – kravits88

0

こんにちは、私はあなたがテーブル全体にわたるts_titleレコードの割合を探していると思います。この

SELECT ts_title, 
(count(ts_title) * 100/(SELECT count(*) FROM URP_PROJECT)) as percentage 
FROM URP_PROJECT Group BY ts_title 
0

を試してみてください。その場合は、これは別の解決策は、ウィンドウ関数を使用することですあなた

DECLARE @ActualCount INT 

select @ActualCount = COUNT(*) from urp_project 


select ts_title 
    ,(Count(ts_title)/ @ActualCount)* 100 AS Percentage  
from urp_project 
group by ts_title; 
1

役立つだろう:

select ts_title, 
     100.0 * (up.cnt*1.0/(sum(up.cnt) over (partition by 1))) 
from 
(
    select ts_title, count(*) as cnt 
    from upr_project 
    group by ts_title 
) up 
+0

この解決策は、GROUPING SETS、ROLLUPまたはCUBEを使用して「合計」行がある場合にも機能します。 "total"行の余分なボリュームを考慮するために、1.0ではなくup.cntに2.0を掛けるだけです。 – supergrady

0

このような何か、おそらく:

SELECT 
    ts_title, 
    COUNT(*) * 100.0/SUM(COUNT(*)) OVER() AS percentage 
FROM URP_PROJECT 
GROUP BY ts_title 

便利な読書:

関連する問題