值组合上的SQL组

值组合上的SQL组,sql,grouping,Sql,Grouping,我正在做一个关于用户如何启动某个东西的DB设计。 我的想法是要有timestamp(DateTime)列和method列(varchar) 此“方法”(varchar)可以是任何内容: 按钮(OK) 按钮 应用程序 阿普兹 等 如何计算使用次数,但将某些值分组。在这种情况下,我希望得到我的结果: 按钮:20 附录十:10 附录Z:14 如果表名为tblTest,则查询如下所示: SELECT method, COUNT(*) FROM tblTEst Group BY method

我正在做一个关于用户如何启动某个东西的DB设计。 我的想法是要有timestamp(DateTime)列和method列(varchar)

此“方法”(varchar)可以是任何内容:

  • 按钮(OK)
  • 按钮
  • 应用程序
  • 阿普兹
如何计算使用次数,但将某些值分组。在这种情况下,我希望得到我的结果:

  • 按钮:20
  • 附录十:10
  • 附录Z:14

如果表名为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)
如果我误读了这个问题,我深表歉意。如果您在数据和分组方案方面具有一致性,那么这是最后一次纠正错误的机会。您可以执行以下操作:

 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的答案是正确的。

如果表名为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)
如果我误读了这个问题,我深表歉意。如果您在数据和分组方案方面具有一致性,那么这是最后一次纠正错误的机会。您可以执行以下操作:

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

否则斯图尔特·摩尔的答案是正确的。

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

一种方法是使用查找表:

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
这种方法的优点是,随着更多方法的添加,它具有可伸缩性。而不是手工编码查询,每次都需要修改查询。

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

一种方法是使用查找表:

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
这种方法的优点是,随着更多方法的添加,它具有可伸缩性。而不是手工编写查询,每次都需要修改。

不幸的是,这并不能满足@PowerRoy的要求。他们希望通过一组方法进行分组(看看所需的结果,他们希望所有的“按钮*”方法一起计数,而不是分开计数(即:按钮计数=按钮计数+按钮计数)。不幸的是,这并不能满足@PowerRoy的要求。他们希望通过一组方法进行分组(查看所需的结果,他们希望所有“按钮*”方法一起计数,而不是分开计数(即:按钮计数=按钮计数+按钮计数)。您使用的是哪种DBMS?神谕PostgreSQL?DB2?目前用于测试MySql,但可能是MsSQL或其他。希望这不会影响查询。您使用的是哪种数据库管理系统?神谕PostgreSQL?DB2?目前用于测试MySql,但可能是MsSQL或其他。希望这不会影响查询。因此,如果没有额外的表,则无法执行此操作?不可靠。您需要编写一些相当糟糕的模式匹配代码,然后可能
UNION
一系列查询一起处理规则。随着规则的改变或新方法被添加到列表中,长期维护将是一场噩梦。因此,如果没有额外的表,就不可能做到这一点?这是不可靠的。您需要编写一些相当糟糕的模式匹配代码,然后可能
UNION
一系列查询一起处理规则。随着规则的改变或新方法被添加到列表中,长期维护将是一场噩梦。