Mysql如何按组查找累计总数

时间:2014-06-03 23:02:58

标签: mysql cumulative-sum

任何人都可以帮我解决这个问题。我有一个剧集表和一集将有以下约会。剧集表就像

+-------------+------------+------------+------------+----------------+------+
| Episode_id  |  Patientid |  St_date   |  End_date  |      Status    | ...  |
+-------------+------------+------------+------------+----------------+------+
| 61112345    | 100001     | 12-01-2010 |            | Active         |      |
| 61112346    | xxxxxx     | 20-01-2010 | 10-10-2011 | Withdrawn      |      |
| .........   | xxxxxxxx   | 30-01-2010 | 10-05-2011 | Lost to follow |      |
| .........   | xxxxxxxx   | 01-02-2011 | Active     | Active         |      |
+-------------+------------+------------+------------+----------------+------+

状态字段保存每集的状态。一集有6个约会,每个约会3个月。所以完整的一集有18个月。有些病人可能会完成所有6个预约,有些可能会在中间退出,或者有些人会失去跟进。我需要创建一个仪表板。

约会表将包含

字段
Appointment_id
PatientId
...
Stats  // Completed or pending, which is used for reporting 

例如,如果患者完成2次预约,并且他在episdode上被标记为已撤回,这意味着他已退出第3次访问并且活跃进行2次访问,如果我们在第5次应用程序中失去跟随他,那么他将处于活动状态对于4app然后他将被添加到第5次访问的跟进。如果他完成所有,那么他将加入所有6次访问的活跃。报告应该像

Report from 01-01-2010 to 31-12-2010
+--------+--------+-------------+----------------+---------+
|        | Active |  Withdrawn  | Lost to follow | Revised |
+------- +--------+-------------+----------------+---------+
| visit1 | 1500   | 30          | 5              | 5       |
| Visit2 | 1800   | 20          | 4              | 3       |
| Visit3 | 1900   | 45          | 3              | 2       |
| Visit4 | 1800   | 34          | 0              | 1       |
| Visit5 | 1900   | 30          | 0              | 1       |
| Visit6 | 1200   | 20          | 0              | 5       |
+--------+--------+-------------+----------------+---------+

目前我们正在获取查询并仅使用循环我们正在生成这样的报告,但它需要时间来处理,有什么办法可以实现使用查询本身。

1 个答案:

答案 0 :(得分:0)

你想要分组的并不是很清楚,但我可以给你一个通用的答案。在where子句之后,您可以添加“按字段名称分组的字段名称”,其中fieldname是您要计算的元素或总和。然后,您可以将(fieldname)或sum(fieldname)计数为add或count。

这可能会有所帮助:http://www.artfulsoftware.com/infotree/qrytip.php?id=105