2

パワーユーザーは、SQLやその他の言語(Rなど)を使用することがよくあります。(たとえば、疾患データを含む)テーブルを探索する際に、[軽度]、[中程度]、[重度]の値を持つ[重大度]列が表示される場合があります。

多くの言語(Rなど)では、ユーザーは次のように書くことができます。

table(diseasedata$severity) 

各重大度の行数(行数)のクイックテーブルを参照してください。

mild      20321
moderate  3512
severe    35135

独自の関数を作成する権限がなく、単純なtsql権限を持つユーザーの場合、列の概要をわかりやすく表示するtable(column)に似たスマートなTSQLコマンドはありますか?

「selectseverity、count(*)from tbl group byseverity」よりも高度で短いものを探しています!

4

3 に答える 3

1

独自の関数/ビューを作成せずに...いいえ、これは、すぐに使用できるSqlが取得するのと同じくらい簡潔です。

select severity, count(*) from tbl group by severity

たぶん私はSQLに慣れているだけですが、それは私にはかなり短くて甘いようです...

于 2013-02-05T19:07:37.603 に答える
0

批判的に申し訳ありませんが、「より高度な」とは「より複雑な」という意味の場合、同じ答えを(group byとして)取得するために、なぜより複雑なコードが必要なのですか?そうではないと確信しています。

おおよその分布のみが必要であり、適切なインデックスがない非常に大きなデータセット列(つまり、数十億行以上)で必要であると仮定します。私が使用した別の方法は、コマンドDBCC SHOW_STATISTICS(http://msdn.microsoft.com/en-us/library/ms174384.aspx)を使用して、そのテーブルのいくつかの列の統計を検索することです。運が良ければ、これは非常に高速で、数ミリ秒で100,000,000,000行を超える分布を返します。しかし、それらは概算であり、古くなっている可能性があります。または、運が悪ければ、まったくありません。

于 2013-02-05T19:06:25.787 に答える
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)
于 2013-02-06T07:04:51.353 に答える