MySQL组,按天划分5辆 Pens=>20 车轮=>4

MySQL组,按天划分5辆 Pens=>20 车轮=>4,mysql,sql,join,group-by,sum,Mysql,Sql,Join,Group By,Sum,我需要一些帮助来找出正确的SQL语句 如果您有一个具有以下结构的表: 标识、产品标识、单位、时间戳 我不想要一份包含每天所有单位的清单。一个产品每天最多有一条记录。 所以我的第一次尝试是: SELECT DATE(timestamp) as day, SUM(units) as overall_units FROM tbl GROUP BY DATE(timestamp); 通常情况下,这应该可以做到。但有时有些日子,产品没有记录。尽管如此,这些单位仍在仓库中

我需要一些帮助来找出正确的SQL语句

如果您有一个具有以下结构的表: 标识、产品标识、单位、时间戳

我不想要一份包含每天所有单位的清单。一个产品每天最多有一条记录。 所以我的第一次尝试是:

SELECT 
    DATE(timestamp) as day, SUM(units) as overall_units 
FROM 
    tbl 
GROUP BY 
    DATE(timestamp);
通常情况下,这应该可以做到。但有时有些日子,产品没有记录。尽管如此,这些单位仍在仓库中,因此它们应该在计算中

例如:

我们有三种产品。汽车、钢笔和轮子。 2012年10月20日的记录:

汽车=>5辆 Pens=>20 车轮=>4

2012年10月21日的记录 汽车=>5辆 车轮=>6

我的查询将给出以下结果:

2012-10-20=>29

2012-10-21=>11

但我想,如果当天没有某个产品的记录,它应该使用该产品的记录,这是最接近的一个

因此,它应该是:

2012-10-21=>31


我希望你能理解我的需要

我认为你应该研究一下不同的功能。 查询可以是这样的:选择DISTINCTproduct_id,*fromtblorderbytimestampdesc;使用PHP循环遍历结果并累积单位

SELECT 
   MAX (DATE(timestamp) ) as day, SUM(units) as overall_units 
FROM tbl
更新::

 SELECT max(day),sum(ou) from  
     (  select DATE(timestamp) as day, SUM(units) as ou 
        FROM tbl 
        GROUP BY   DATE(timestamp);
      )
内部qry将返回

2012-10-20 , 29
2012-10-21 , 11
 2012-10-21 , 40
最终查询将返回

2012-10-20 , 29
2012-10-21 , 11
 2012-10-21 , 40

但这似乎不适用于按日期时间戳分组