2017-10-11 66 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