【发布时间】:2011-06-23 11:36:37
【问题描述】:
我正在用 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 年 6 月 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 年 6 月 1 日。 然后我遍历数据并在日期相同时添加值。 给我 Value1=50 和 Value2=6。
2) 所有产品的 Value1 每天的最高条目总计。 即对于 2011 年 6 月 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 的运气。
大家有什么建议吗
【问题讨论】:
-
让它更清楚......你的意思是添加每个用户的所有 Vlaue1 和 Value2 并显示它最近的时间????
-
对于3.为什么用户1的Value1=44,不应该是10 + 20 = 30吗?
-
抱歉打错了,应该是用户 2,但对于用户 1 来说是 30
-
@Syeda 没有我已经这样做的代码。我需要每个产品每天结束时的 Value1 和 2,然后将所有产品相加,这样你就得到一组 value1 和 2,即用户每天结束时所有产品的总和。我稍微更新了示例以尝试清除它。