SQL Group上的值组合

时间:2012-11-16 10:02:42

标签: sql grouping

我正在设计有关用户如何推出某些内容的数据库设计。 我的想法是有时间戳(DateTime)列和方法列(varchar)。

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

  • BUTTON_OK
  • BUTTON_X
  • APP_Y
  • APP_Z

如何计算使用次数,但将某些值分组。在这种情况下,我希望得到我的结果:

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

2 个答案:

答案 0 :(得分:2)

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

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

tbl_methodgroup

method_id    Method      Method_group
1            Button_OK   Buttons
2            Button_X    Buttons
3            App_Y       App_Y
4            App_Z       App_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

随着更多方法的添加,此方法具有可扩展性的优势。而不是手动编码查询,每次都需要修改。

答案 1 :(得分: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)

否则Stuart Moore的回答是正确的。