有结构一样的表。item_sell_20110817
item_sell_20110816
item_sell_20110815
item_sell_20110814
item_sell_20110813
结构:
item_id
item_cid
item_no
item_sell_qty
数据:
每个表都有95万条销售记录。要根据sell_qty计算每个ItemNo当天的升降幅度?
这么多数据怎么耍啊。
或另有其它处理方案?
item_sell_20110816
item_sell_20110815
item_sell_20110814
item_sell_20110813
结构:
item_id
item_cid
item_no
item_sell_qty
数据:
每个表都有95万条销售记录。要根据sell_qty计算每个ItemNo当天的升降幅度?
这么多数据怎么耍啊。
或另有其它处理方案?
哪个字段保存日期?
(当天item_sell_qty - 昨天item_sell_qty) / 昨天item_sell_qty * 100 /%
不是这么算么?
CREATE TABLE IF NOT EXISTS `item_sell_20110817` (
`item_id` int(15) NOT NULL auto_increment,
`item_cid` int(15) NOT NULL,
`item_no` varchar(15) NOT NULL,
`item_sell_qty` int(8) NOT NULL,
PRIMARY KEY (`item_id`),
UNIQUE KEY `item_cid` (`item_cid`,`item_no`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=900001 ;--
-- 转存表中的数据 `item_sell_20110817`
--INSERT INTO `item_sell_20110817` (`item_id`, `item_cid`, `item_no`, `item_sell_qty`) VALUES
(900000, 113511, '131353417', 7773);应该是这样。表不在我这电脑
select *,(b.item_sell_qty-a.item_sell_qty)/a.item_sell_qty *100
from item_sell_20110816 a inner join item_sell_20110817 b on a.itemno=b.itemno
DELIMITER $$DROP PROCEDURE IF EXISTS `dd`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `dd`(adate1 DATE,adate2 DATE)
BEGIN
WHILE adate1<adate2 DO
SET @asql=CONCAT('select *,(b.item_sell_qty-a.item_sell_qty)/a.item_sell_qty *100 from item_sell_',DATE_FORMAT(adate1,'%Y%m%d'),
' a inner join item_sell_',DATE_FORMAT(adate1+INTERVAL 1 DAY,'%Y%m%d'),' b on a.itemno=b.itemno');
SELECT @asql;
PREPARE stml FROM @asql;
EXECUTE stml;
SET adate1=adate1+INTERVAL 1 DAY;
END WHILE;
END$$DELIMITER ;
CALL dd('2011-8-8','2011-8-10')
自行修改
from tb
group by ItemNo