我有一个数据分析问题,可以很容易地通过T-SQL或脚本解决,但我想知道是否有巧妙的SQL解决方案。问题是它在某种程度上会影响SQL的行独立性假设。
我有一个表,其中包含与用户相关联的名称-值对,按提交顺序排序,例如:
ID USERID VARIABLE VALUE SUBMITTED 3115 2287 votech05 2 2009-02-02 15:34:00 3116 2287 comcol05 1 2009-02-02 15:34:00 3117 2287 fouryr05 1 2009-02-02 15:35:00 3118 2287 none05 2 2009-02-02 15:35:00 3119 2287 ocol1_05 2 2009-02-02 15:44:00 3120 2287 disnone 2 2009-02-02 15:45:00 3121 2287 dissense 2 2009-02-02 15:49:00 3122 2287 dismobil 3 2009-02-02 15:51:00 3123 2287 dislearn 3 2009-02-02 15:51:00 3124 2287 disment 3 2009-02-02 15:52:00 3125 2287 disother 2 2009-02-02 15:55:00 3126 2287 disrefus 7 2009-02-02 15:58:00
我想确定最大相同值组的值和计数(当数据按照ID主键排序时)。因此,对于上面的示例,因为我有四个连续出现的value = 2,而只有三个value = 3,所以我希望报告:
USERID VALUE COUNT 2287 2 4
给定用户。
再次强调,使用其他工具可以很快地完成这项工作,但由于数据集非常大(约7500万条记录)且经常更改,因此最好能够使用查询解决此问题。我正在使用SQL Server 2005。
我有一个表,其中包含与用户相关联的名称-值对,按提交顺序排序,例如:
ID USERID VARIABLE VALUE SUBMITTED 3115 2287 votech05 2 2009-02-02 15:34:00 3116 2287 comcol05 1 2009-02-02 15:34:00 3117 2287 fouryr05 1 2009-02-02 15:35:00 3118 2287 none05 2 2009-02-02 15:35:00 3119 2287 ocol1_05 2 2009-02-02 15:44:00 3120 2287 disnone 2 2009-02-02 15:45:00 3121 2287 dissense 2 2009-02-02 15:49:00 3122 2287 dismobil 3 2009-02-02 15:51:00 3123 2287 dislearn 3 2009-02-02 15:51:00 3124 2287 disment 3 2009-02-02 15:52:00 3125 2287 disother 2 2009-02-02 15:55:00 3126 2287 disrefus 7 2009-02-02 15:58:00
我想确定最大相同值组的值和计数(当数据按照ID主键排序时)。因此,对于上面的示例,因为我有四个连续出现的value = 2,而只有三个value = 3,所以我希望报告:
USERID VALUE COUNT 2287 2 4
给定用户。
再次强调,使用其他工具可以很快地完成这项工作,但由于数据集非常大(约7500万条记录)且经常更改,因此最好能够使用查询解决此问题。我正在使用SQL Server 2005。