ユーザーが何かを起動する方法に関するDB設計に取り組んでいます。私のアイデアは、タイムスタンプ (DateTime) 列とメソッド列 (varchar) を持つことでした。
この「メソッド」(varchar) は何でもかまいません:
- BUTTON_OK
- BUTTON_X
- APP_Y
- APP_Z
- 等
どうすれば用途をカウントできますが、いくつかの値をグループ化できます。この場合、私は自分の結果を得たいと思っています:
- ボタン: 20
- アプリ_X: 10
- アプリ_Z: 14
どの「メソッド」がどの「メソッド グループ」に分類されるかを定義する何らかの方法が必要です。
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
この方法には、より多くの方法が追加されるにつれてスケーラブルになるという利点があります。毎回変更する必要があるクエリを手作業でコーディングするのではなく。
テーブルの名前が 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)
そうでなければ、スチュアート・ムーアの答えは正しいものです。