MySQL组,按天划分5辆 Pens=>20 车轮=>4
我需要一些帮助来找出正确的SQL语句 如果您有一个具有以下结构的表: 标识、产品标识、单位、时间戳 我不想要一份包含每天所有单位的清单。一个产品每天最多有一条记录。 所以我的第一次尝试是: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); 通常情况下,这应该可以做到。但有时有些日子,产品没有记录。尽管如此,这些单位仍在仓库中
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
但这似乎不适用于按日期时间戳分组