我想通过下面的查询获得每个用户的运行计数
有谁知道我怎么做到这一点?如果我删除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
答案 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
变量中,每当用户更改它时,它将再次开始计数。