2017-10-11 69 views
1

我正在MSSQL 2008中使用存儲過程進行數據分析。我有一個腳本,使用以下動態SQL返回不同的值和計數:顯示計數和TSQL中不同的百分比

SELECT @SQL = N'SELECT ' + @FieldName + ', COUNT(*) AS [Frequency] FROM ' + @TableName + ' GROUP BY ' + @FieldName + ' ORDER BY [Frequency] DESC'; 

我想將每個不同計數的百分比添加到該輸出。我認爲使用here的技術可以爲我所做的工作,但我無法弄清楚如何整合這兩者。 所需的輸出將顯示不同的值,每個的數量和每個的百分比。

在此先感謝您的幫助。

回答

0

您的查詢應該像

SELECT @SQL = 
N'SELECT ' + 
@FieldName + 
', COUNT(*) AS [Frequency] '+ 
', (COUNT(*)* 100/(Select Count(*) From '[email protected]+ ')) AS [percentage] ' + 
'FROM ' + 
@TableName + 
' GROUP BY ' + 
@FieldName + 
' ORDER BY [Frequency] DESC'; 

see demo here

+1

這工作完美!非常感謝@DhruvJoshi。 – user183121

0

我想分享一些我加入到從@DhruvJoshi優秀的答案,希望它可以幫助別人的未來。

我希望百分比顯示爲2位小數,並向輸出添加百分比符號。以下是我最終使用的內容:

SELECT @SQL = 
N'SELECT ' + 
@FieldName + 
', COUNT(*) AS [Frequency] '+ 
', CAST(CONVERT(DECIMAL(10,2),(COUNT(*)* 100.0/(Select Count(*) From '+[email protected]+ '))) AS nvarchar) + ''%'' AS [Percent] ' + 
'FROM ' + 
@TableName + 
' GROUP BY ' + 
@FieldName + 
' ORDER BY [Frequency] DESC'; 
EXECUTE sp_executesql @SQL; 

希望能幫助未來的某個人。再次感謝@DhruvJoshi