0

ユーザーが何かを起動する方法に関するDB設計に取り組んでいます。私のアイデアは、タイムスタンプ (DateTime) 列とメソッド列 (varchar) を持つことでした。

この「メソッド」(varchar) は何でもかまいません:

  • BUTTON_OK
  • BUTTON_X
  • APP_Y
  • APP_Z

どうすれば用途をカウントできますが、いくつかの値をグループ化できます。この場合、私は自分の結果を得たいと思っています:

  • ボタン: 20
  • アプリ_X: 10
  • アプリ_Z: 14
4

2 に答える 2

2

どの「メソッド」がどの「メソッド グループ」に分類されるかを定義する何らかの方法が必要です。

1 つの方法は、ルックアップ テーブルを用意することです。

tbl_methodgroup

method_id メソッド Method_group
1 ボタン_OK ボタン
2 Button_X ボタン
3 アプリ_Y アプリ_Y
4 アプリ_Z アプリ_Z

次に、次を使用できます。


select 
b.method_group, 
count(1) 
from
tbl_methodgroup a
  inner join tbl_method b on a.Method=b.Method
group by b.method_group

この方法には、より多くの方法が追加されるにつれてスケーラブルになるという利点があります。毎回変更する必要があるクエリを手作業でコーディングするのではなく。

于 2012-11-16T10:15:46.167 に答える
1

テーブルの名前が tblTest の場合、クエリは次のようになります。

 SELECT method, COUNT(*) FROM tblTEst Group BY method

質問を読み間違えた場合はお詫びします。データに一貫性があり、次のシナリオをグループ化できる場合は、正しくする最後のチャンスです。

 SELECT LEFT(method,CHARINDEX('_',method)-1), 
        COUNT(*) 
 FROM tblTest 
 GROUP BY LEFT(method,CHARINDEX('_',method)-1)

そうでなければ、スチュアート・ムーアの答えは正しいものです。

于 2012-11-16T10:06:16.050 に答える