有个数据库存储方案的问题,一直困扰,求解惑

假设前端需要的数据是这样的:

那我在MySQL中的存储方案应该怎样设置。

如果只是存日期,属性,数值这3个字段,sql语句一直写不出来。

重点是增减字段需要程序查询运算得出。

还请大牛指教存储方案。感激不尽...

日期,属性,数值,增减这四个字段就行,每次写入时,把对应的前一笔记录查出来,计算本次的增减值,再写入

 

-- MySQL

-- 假如表结构如下
CREATE TABLE `t_demo` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `create_date` date DEFAULT NULL COMMENT '日期',
  `attr` varchar(64) DEFAULT NULL COMMENT '属性',
  `attr_value` int(11) DEFAULT NULL COMMENT '值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='示例表';

-- 查询语句
SELECT
	t.*,
	( t.attr_value - t2.attr_value ) AS diff 
FROM
	t_demo t
	LEFT JOIN t_demo t2 ON t2.attr = t.attr 
	AND t2.create_date = date_sub( t.create_date, INTERVAL 1 DAY ) 
ORDER BY
	t.create_date,
	t.attr;

结果示例:

这是个不错的解决方案,逻辑简单,易理解,我也是这么想的,如果不在意时间,在意空间,似乎就不太得行了。