基于字段运行计数

时间:2013-06-25 22:36:33

标签: mysql sql

我想通过下面的查询获得每个用户的运行计数

有谁知道我怎么做到这一点?如果我删除where user = 1,它会因为分组而给我一个总体运行计数。

我想获得用户1到N的运行计数。我宁愿不单独为每个用户运行查询,因为有几百万。

SET @runtot:=0;
SELECT q1.t, q1.user, q1.c, (@runtot := @runtot + q1.c) AS rt
FROM (
   SELECT
     time AS t,
     user,
     COUNT(distinct `post`) AS c
   FROM
     interactions
   WHERE user = 1
   GROUP BY
     user,time
   ORDER BY
     user
) AS q1

1 个答案:

答案 0 :(得分:3)

您可以使用此查询:

SET @runtot:=0;
SET @last_user:=NULL;
SELECT
  q1.t,
  q1.user,
  q1.c,
  CASE WHEN @last_user=q1.user
       THEN @runtot := @runtot + q1.c
       ELSE @runtot:=q1.c END AS rt,
  @last_user:=q1.user
FROM (
  ...
) AS q1

此查询会将最后一个用户保留在@last_user变量中,每当用户更改它时,它将再次开始计数。