0

我正在设计一个关于用户如何启动某些东西的数据库设计。我的想法是有时间戳(DateTime)列和方法列(varchar)。

这个“方法”(varchar)可以是任何东西:

  • BUTTON_OK
  • 按钮_X
  • APP_Y
  • APP_Z
  • ETC

我如何计算使用但对一些值进行分组。在这种情况下,我想要我的结果:

  • 按钮:20
  • APP_X:10
  • APP_Z:14
4

2 回答 2

2

您需要某种方式来定义哪些“方法”属于哪个“方法组”。

一种方法是有一个查找表:

tbl_methodgroup

method_id 方法 Method_group
1 Button_OK 按钮
2 Button_X 按钮
3 App_Y App_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 回答