高级用户经常使用SQL和其他语言(例如R)。 在探索表格(例如,有疾病数据)时,可能会有一个列严重性,其值为Mild,Moderate,Severe。
在许多语言(例如R)中,用户可以编写
table(diseasedata$severity)
并查看快速表中每种严重性的行数(行数)。
mild 20321
moderate 3512
severe 35135
没有权限编写自己的函数和普通tsql权限的用户是否有类似于表(列)的智能TSQL命令来生成列的精彩概述?
我正在寻找更高级和更短的东西,比严格'选择严重性,从tbl组计数(*)!
答案 0 :(得分:1)
没有创建自己的函数/视图......那么不,这就像开箱即用的Sql一样简洁:
select severity, count(*) from tbl group by severity
也许我只是习惯了Sql,但这对我来说似乎很短暂和甜蜜......
答案 1 :(得分:0)
对不起,但如果“更高级”意味着“更复杂”,为什么你想要更复杂的代码 - 给你相同的答案(作为一组)?我确定不是。
假设您的意思是您只需要近似分布,并且在非常大的数据集列(即> =数十亿行)上没有任何好的索引。我使用的另一种方法是尝试使用命令DBCC SHOW_STATISTICS(http://msdn.microsoft.com/en-us/library/ms174384.aspx)在该表上查找一些列统计信息。如果幸运的话,这可以非常快,在几毫秒内返回超过100,000,000,000行的分布。但是,它们只是近似的,可以是过时的,或者如果你不幸的话 - 根本不存在。
答案 2 :(得分:0)
您可以将代码段与一些动态SQL一起使用,您只需更改几个变量的分配即可查询不同的表和不同的字段。
declare @TableName sysname = 'diseasedata'
declare @FieldName sysname = 'severity'
declare @SQL nvarchar(max)
set @SQL = 'select '+quotename(@FieldName)+', count(*) as C
from '+quotename(@TableName)+'
group by '+quotename(@FieldName)
exec (@SQL)