微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取每个日期的总和

如何解决获取每个日期的总和

| 我正在用C#编写一个程序,该程序可以读写sqlite(System.Data.sqlite) 我有一张看起来像这样的桌子
UserID  ProdID  Value1  Value2  TIME
------------------------------------------------
1        1      10      1      2011-06-01 10:20:30.333
1        2      20      3      2011-06-01 10:20:30.444
2        1      100     11     2011-06-01 10:20:30.333
2        2      22      32     2011-06-01 10:20:30.444
1        1      20      2      2011-06-01 10:30:30.333
1        2      30      4      2011-06-01 10:30:30.444
2        1      22      22     2011-06-01 10:30:30.333
2        2      33      44     2011-06-01 10:30:30.444
1        1      10      1      2011-06-02 10:20:30.333
1        2      20      3      2011-06-02 10:20:30.444
2        1      11      11     2011-06-02 10:20:30.333
2        2      22      32     2011-06-02 10:20:30.444
1        1      20      2      2011-06-02 10:30:30.333
1        2      30      4      2011-06-02 10:30:30.444
2        1      22      22     2011-06-02 10:30:30.333
2        2      33      44     2011-06-02 10:30:30.444
我需要为每个用户从中获得三件事。 1)值1和2的每个产品在一天中的最后输入项总计,因此其一两个值即所有产品的总和。 即,对于2011年1月1日的用户1,它将是Value1 = 50和Value2 = 6。 我目前使用:
SELECT * FROM TickData AS a,;
(SELECT USERID,DATE(TIME) AS JUSTDATE,MAX(TIME) AS MTIME;
FROM TickData;
GROUP BY 1,2;
) AS b;
WHERE a.USERID = b.USERID;
AND a.TIME = b.MTIME;
AND STrftIME(\'%Y-%m\',a.TIME) = STrftIME(\'%Y-%m\',\'Now\');
AND a.USERID = 1;
这将返回:
UserID  ProdID  Value1  Value2  TIME
------------------------------------------------
1        1      20      2      2011-06-01 10:30:30.333
1        2      30      4      2011-06-01 10:30:30.444
对于2011-06-01。 然后我遍历数据并在日期相同时添加值。 给我Value1 = 50和Value2 = 6。 2)所有产品的“ Value1”每天最高条目合计。 即,对于2011年2月1日的用户2,它将为Value1 = 133。
UserID  ProdID  Value1  Value2  TIME
------------------------------------------------
2        1      100     11     2011-06-01 10:20:30.333
2        2      33      44     2011-06-01 10:30:30.444
3)所有产品的“ Value1”每天最低条目合计。 即,对于2011年6月1日的用户2,它将为Value1 = 44。
UserID  ProdID  Value1  Value2  TIME
------------------------------------------------
2        2      22      32     2011-06-01 10:20:30.444
2        1      22      22     2011-06-01 10:30:30.333
我还没有2或3的运气。 有人有任何建议吗     

解决方法

        好的,周末我要锻炼自己 1)
SELECT sum(value1),sum(value2) FROM TickData AS a,(SELECT USERID,PRODID,DATE(TIME) AS JUSTDATE,MAX(TIME) AS MTIME
FROM TickData
GROUP BY 1,2,3
) AS b
WHERE a.USERID = b.USERID
AND a.TIME = b.MTIME
AND STRFTIME(\'%Y-%m\',a.TIME) = STRFTIME(\'%Y-%m\',\'NOW\')
AND a.USERID = 1
GROUP BY JUSTDATE
2)
SELECT sum(Mval) FROM TickData AS a,ID,MAX(value1) AS Mval
FROM TickData
GROUP BY 1,3
) AS b
WHERE a.USERID = b.USERID
AND a.ID = b.ID
AND STRFTIME(\'%Y-%m\',\'NOW\')
AND a.USERID = 2
GROUP BY JUSTDATE
3)
SELECT sum(Mval) FROM TickData AS a,MIN(value1) AS Mval
FROM TickData
GROUP BY 1,\'NOW\')
AND a.USERID = 2
GROUP BY JUSTDATE
编辑: 2和3可以通过一个查询完成:
SELECT sum(Mval),sum(Mval2) FROM TickData AS a,MAX(PL) AS Mval,MIN(PL) AS Mval2
FROM TickData
GROUP BY 1,\'NOW\')
AND a.USERID = 2
GROUP BY JUSTDATE
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。