java - 选择每个项目的最新日期并在 sqlite 中获取总和

标签 java android sql sqlite

我有一个要求,其中有 10 件商品,每件商品有 10 条包含买入价卖出价的记录。

现在我的要求是,对于每件商品,我需要获取最新日期并计算买卖价格...就像我需要对所有 10 件商品进行相同的操作,最后将所有商品的买卖价格相加为了获得总和...我需要在一个查询中完成整个事情..

我可以编写查询和子查询,但不知道如何编写如此复杂的查询..

数据为:

item    date        buy    sell

item1   28/10/2014  10      10
item1   27/10/2014  10      10
item1   26/10/2014  10      10
item2   28/10/2014  10      10
item2   27/10/2014  10      10
item2   26/10/2014  10      10
item3   28/10/2014  10      10
item3   27/10/2014  10      10
item3   26/10/2014  10      10

我的要求是得到

item1   28/10/2014  10      10
item2   28/10/2014  10      10
item3   28/10/2014  10      10

最后是totay buy=30total sell=30

到目前为止我已经尝试过:

下面的查询我已经尝试过

select item as c, buy as a ,sell as b,date from table group by item order by  substr(date,7,4)||substr(date,4,2) ||substr(date,1,2) desc limit 1

此查询仅返回与一项而不是 3 行对应的 1 行值。我不确定如何构建此类查询。

最佳答案

您需要获取max(date),而不是使用limit 1,并且您只需求和即可购买sell 值照常:

select item as c, buy as a, sell as b, max(date), sum(buy) as totalbuy, sum(sell) as totalsell
from trans
group by item

SQLFiddle:http://sqlfiddle.com/#!7/ef07f/14

编辑:

根据其文档,max 也可用于字符串。
https://www.sqlite.org/lang_corefunc.html ;它也可能有单个或多个参数。

关于java - 选择每个项目的最新日期并在 sqlite 中获取总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624579/

相关文章:

java - JSoup 工作错误

android - showAsDropDown 重力参数不起作用

user-interface - 如何在图像顶部添加文本,如 android 中的脉冲

Java并发访问ArrayList

sql - SQL Server 2008 是否有效地缓存了 linq 生成的查询?

mysql - 我怎样才能使这个sql查询更快?

java - 为什么我的 DataPoints 方法被多次调用?

Java边框布局问题?

java - 如何让 java.concurrency.CyclicBarrier 按预期工作

sql - 国家、地区、县、镇的最佳数据库模式