1

我正在使用以下语句来读出用户注册

SELECT DAY(p.creationInstant) as day, MONTH(p.creationInstant) as month, 
       YEAR(p.creationInstant) as year, count(p.id) as users 
FROM person p WHERE p.enrollmentStatus ="Enrolled" 
GROUP BY year, month, day 
ORDER BY year, month, day

这会给我以下输出:

day month year users
  1     1 2013     3
  2     1 2013     5
  3     1 2013     7
...  

现在我想有一个总结用户的第四列:

day month year users **totalUsers**
  1     1 2013     3          3
  2     1 2013     5          8
  3     1 2013     7         15
...  

但不知何故,我无法弄清楚如何使用 SQL(dbms:mySQL)来做到这一点。

4

2 回答 2

0
select day,
       month,
       year,
       (SELECT sum(a.id)
          FROM person a
         WHERE a.enrollmentStatus = "Enrolled"
           and DAY(a.creationInstant) <= b.day)
  from (SELECT DAY(p.creationInstant) as day,
               MONTH(p.creationInstant) as month,
               YEAR(p.creationInstant) as year,
               count(p.id) as users
          FROM person p
         WHERE p.enrollmentStatus = "Enrolled"
         GROUP BY year, month, day
         ORDER BY year, month, day) b
于 2013-09-23T11:23:25.350 回答
0

这就是我的陈述对“运行总计”问题的提示后的处理方式,它就像一个魅力:

SET @runtot:=0;
SELECT q1.day, q1.month, q1.year, q1.users, 
       (@runtot := @runtot + q1.users) AS totalUsers
FROM (
  SELECT DAY(p.creationInstant) as day, MONTH(p.creationInstant) as month,
         YEAR(p.creationInstant) as year, count(p.id) as users 
  FROM PERSON p where p.enrollmentStatus ="Enrolled" 
  GROUP BY year, month, day 
  ORDER BY year, month, day) as q1
于 2013-09-23T11:10:49.563 回答