2

我想通过以下查询为每个用户获取运行计数

有谁知道我该怎么做?如果我删除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
4

1 回答 1

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变量中,并且每当用户更改时,它将重新开始计数。

于 2013-06-25T22:47:11.470 回答