我在sqlite3中有一个包含数千行的表,并希望为特定查询创建几天的累积总和。我尝试了一些我在这里找到的东西,但没有任何东西给了我正在寻找的东西。
所以这是我的表的一部分作为示例值:
id|killmailid|killmaildate|killmailtime|attallianceid|attcharid|attship
69124|69295810|2018-04-12|00:57|99007379|1129992577|11393
69125|69295810|2018-04-12|00:57|99007379|90279655|29990
69126|69298874|2018-04-12|02:07|99007379|2008187055|671
69127|69300565|2018-04-12|07:32|99007379|96282716|28665
69128|69300565|2018-04-12|07:32|99007379|96734967|11198
69129|69300911|2018-04-12|10:21|99007379|90154776|608
69130|69302387|2018-04-12|11:29|99007379|91488317|23913
我们正在使用此数据库中的数据执行多项操作,但现在我们希望使用attship获取attcharid的累积值。
我做的第一件事就是让DISTINCT attcharid WHERE attship = X,所以我的查询看起来像这样:
SELECT killmaildate, count(DISTINCT attcharid)
FROM killdata
WHERE killmaildate BETWEEN date('2018-04-12') AND date('2018-04-30')
AND attship = '23913'
AND attallianceid = '99007379'
GROUP BY killmaildate;
这给了我一个很好的清单,列出了在每个killmaildate上使用attship的附件。
2018-04-12|27
2018-04-14|13
2018-04-15|29
2018-04-16|10
2018-04-17|7
2018-04-18|34
2018-04-19|8
2018-04-20|39
现在这部分给了我一些麻烦。我想将这些附件加在一起,但它应该是DISTINCT,这意味着只应添加新的附件。
所以,让我们说2018-04-12已经有27个attchahip,2018-04-13有13个attchahip的attship,但其中10个已经计入第一天,累计值2018-04-13应该是30而不是40。我从这里尝试了一些事情,这些事情并没有真正解决,我的最后一次尝试是这样的:
SELECT killmaildate, sum(attcharid)
FROM ( SELECT killmaildate, count(DISTINCT attcharid) FROM killdata);
但是当然这并没有让我想到的地方。 最后,我想在attallhipid中制作一个关于attship的图表,以了解attship用户的增长情况。
答案 0 :(得分:0)
忽略某些早期组中出现的所有行:
SELECT ...
WHERE ...
AND attcharid NOT IN (SELECT attcharid
FROM killdata AS k2
WHERE k2.killmaildate BETWEEN '2018-04-12' AND '2018-04-30'
AND k2.attship = '23913'
AND k2.attallianceid = '99007379'
AND k2.killmaildate < killdata.killmaildate)
GROUP BY ...