记录写过的有代表性SQL

版权声明:不要随便复制~~ 技术更新有些东西也会相应更新 https://blog.csdn.net/chuxin_mm/article/details/84583322
查询从现在开始向前数3个月的订单	
SELECT * FROM f_order WHERE DATE_FORMAT( createtime, '%Y-%m-%d' ) > DATE_FORMAT( DATE_ADD( now( ), INTERVAL - 3 MONTH ), '%Y-%m-%d' );

查询向前数90天的所有数据
SELECT * FROM f_order WHERE to_days(now()) - to_days(createtime) <= 90;

查询订单某些订单具体时间
SELECT createtime,date(createtime),TIME(createtime),DAY(createtime),YEAR(createtime) FROM f_order;

sql语句if用法
SELECT if(amount>10,amount/10,amount) AS amount FROM f_order WHERE uid = 1456;

同步修改数据
UPDATE f_order f INNER JOIN (SELECT f.oid,f.uid,u.cid cid FROM f_order f LEFT JOIN f_user u ON f.uid = u.uid) e
 SET f.ecid = e.cid
 WHERE f.oid=e.oid;

插入查询数据
INSERT INTO f_order_settlement ( sn, total_amount, ele_amount, service_amount ) 
SELECT sn,( ele_price + server_price ) total_amount,ele_price,server_price FROM f_order WHERE ostate = 1;

修改数据
UPDATE e_account_info f SET f.cid = 10,phone = '15928528345' WHERE uid = 379;

备份一条数据

-- 先删除企业的测试账户
DELETE FROM f_user_company where cid in (181,267,353,405,443,447,512,524,582,655,695,696,946,419,508,515,516,671,59,85,245,254,527);
DELETE FROM f_order where uid in (181,267,353,405,443,447,512,524,582,655,695,696,946,419,508,515,516,671,59,85,245,254,527);
DELETE FROM f_account_info where uid in (181,267,353,405,443,447,512,524,582,655,695,696,946,419,508,515,516,671,59,85,245,254,527);
DELETE FROM e_account_info where uid in (181,267,353,405,443,447,512,524,582,655,695,696,946,419,508,515,516,671,59,85,245,254,527);
DELETE FROM f_user where phone in (13540046686,15881002317,18482180351,17323170819,18380111778,18380438130,13378168066,18200114595,15828479653,15608002876,15202822089,18011283744,18700244990,18382899620,18382899620,13348903857,18011283744,18281569315,18908069158,18215530873,15608283273,15108396721,18381005946,18408249234,15228119181);

DROP TABLE IF EXISTS `f_monitor_order_temp`;
CREATE TABLE `f_monitor_order_temp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) DEFAULT NULL COMMENT '用户id',
  `oid` int(11) DEFAULT NULL COMMENT '订单id',
  `ele_price` decimal(22,2) DEFAULT '0.00' COMMENT '计算后电费',
  `server_price` decimal(22,2) DEFAULT '0.00' COMMENT '计算后服务费',
  `useele` double(10,2) DEFAULT '0.00' COMMENT '计算后用电量',
  `bef_useele` double(10,2) DEFAULT '0.00' COMMENT '原始用电量',
  `bef_eleprice` decimal(22,2) DEFAULT '0.00' COMMENT '原始电费',
  `bef_serverprice` decimal(22,2) DEFAULT '0.00' COMMENT '原始服务费',
  `server_danjia` decimal(22,1) DEFAULT '0.0' COMMENT '服务费单价',
  `pileunm` varchar(100) DEFAULT NULL COMMENT '桩号',
  `sname` varchar(255) DEFAULT NULL COMMENT '电站名',
  `remark` varchar(255) DEFAULT NULL COMMENT '修正原因',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4450 DEFAULT CHARSET=utf8;

-- 创建表
DROP TABLE IF EXISTS `f_monitor_e_order_temp`;
CREATE TABLE `f_monitor_e_order_temp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) DEFAULT NULL COMMENT '用户id',
  `cid` int(11) DEFAULT NULL COMMENT '企业id',
  `phone` varchar(50) DEFAULT NULL COMMENT '电话',
  `e_recharge` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '企业子账号总充值',
  `e_balance` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '企业子账号剩余金额',
  `f_consume` decimal(22,2) NOT NULL DEFAULT '0.00' COMMENT '订单表消费金额',
  `c_type` varchar(20) DEFAULT NULL COMMENT '消费正常,消费异常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=393 DEFAULT CHARSET=utf8;


-- 创建表, 复制f_order中的数据到 f_repair_e_order_history_20180722表中
DROP TABLE IF EXISTS `f_repair_e_order_history_20180722`;
CREATE TABLE `f_repair_e_order_history_20180722` (
  `oid` int(11) NOT NULL AUTO_INCREMENT,
  `sn` varchar(100) DEFAULT NULL COMMENT '订单号',
  `otype` int(11) DEFAULT NULL COMMENT '1-充电订单 2-预约订单',
  `ostate` int(11) DEFAULT '1' COMMENT '-1订单失效 0-正在充电 1-充电结束2准备充电',
  `uid` int(11) DEFAULT NULL COMMENT '用户uid',
  `amount` decimal(10,2) DEFAULT NULL COMMENT '预付费',
  `couponbalance` decimal(10,2) DEFAULT NULL,
  `realbalance` decimal(10,2) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL COMMENT '如有使用优惠券该大于0 或者不为null ',
  `pid` varchar(50) DEFAULT NULL COMMENT '桩编号',
  `gunnumber` varchar(50) DEFAULT NULL COMMENT '枪号',
  `gid` int(11) DEFAULT NULL COMMENT '枪编号',
  `starttime` datetime DEFAULT NULL COMMENT '订单开始时间',
  `endtime` datetime DEFAULT NULL COMMENT '订单结束时间',
  `bsoc` int(11) NOT NULL DEFAULT '0' COMMENT '车辆开始充电时电量',
  `esoc` int(11) NOT NULL DEFAULT '0' COMMENT '车辆结束充电时电量',
  `useele` double(10,2) NOT NULL DEFAULT '0.00' COMMENT '使用电量',
  `ele_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '电价',
  `end_reason` int(11) NOT NULL DEFAULT '0' COMMENT '结束原因(弃用)',
  `use_type` int(11) NOT NULL DEFAULT '0' COMMENT '启动类型(弃用)',
  `scro` int(11) NOT NULL DEFAULT '0' COMMENT '赠送积分',
  `car_id` varchar(50) DEFAULT NULL COMMENT '车牌',
  `car_vin` varchar(50) DEFAULT NULL COMMENT '车辆唯一码',
  `server_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '服务费',
  `createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `roid` int(11) DEFAULT NULL COMMENT '预约产生一个订单,到达现场扫码支付也产生订单,该字段用于关联到之前的预约订单.',
  `paytype` int(11) DEFAULT NULL COMMENT '0-app余额支付 1-电卡支付 2企业账户',
  `order_time` varchar(50) DEFAULT NULL COMMENT '预约时间(预约订单用)',
  `is_push` int(11) NOT NULL DEFAULT '0',
  `is_comment` int(11) NOT NULL DEFAULT '0',
  `back_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '预付费退款金额',
  `card_sn` varchar(50) NOT NULL DEFAULT '0.00',
  `bef_eleprice` decimal(22,2) DEFAULT NULL COMMENT '原始电费',
  `bef_server_price` decimal(22,2) DEFAULT NULL COMMENT '原始服务费',
  `bef_useele` decimal(22,2) DEFAULT NULL COMMENT '原始用电量',
  `ele_price_repair` decimal(22,2) DEFAULT NULL COMMENT '修正电费',
  `server_price_repair` decimal(22,2) DEFAULT NULL COMMENT '修正服务费',
  `server_danjia` decimal(22,1) DEFAULT '0.0' COMMENT '服务费单价',
  `repair_createtime` datetime DEFAULT NULL COMMENT '修正时间',
  `repair_remarke` varchar(255) DEFAULT NULL COMMENT '修正原因',
  `repair_user` varchar(50) DEFAULT NULL COMMENT '修正人',
  PRIMARY KEY (`oid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20178 DEFAULT CHARSET=utf8 COMMENT='充电订单';

-- 清空表
TRUNCATE table f_repair_e_order_history_20180722;

-- 复制数据
INSERT INTO f_repair_e_order_history_20180722(oid,sn,otype,ostate,uid,amount,couponbalance,realbalance,cid,pid,gunnumber,gid,starttime,endtime,bsoc,esoc,useele,ele_price,end_reason,use_type,scro,car_id,car_vin,server_price,createtime,roid,paytype,order_time,is_push,is_comment,back_money,card_sn)
SELECT oid,sn,otype,ostate,uid,amount,couponbalance,realbalance,cid,pid,gunnumber,gid,starttime,endtime,bsoc,esoc,useele,ele_price,end_reason,use_type,scro,car_id,car_vin,server_price,createtime,roid,paytype,order_time,is_push,is_comment,back_money,card_sn
FROM f_order 
WHERE ostate = 1 and paytype = 2 and uid not in (92,1064);


-- 为企业充值记录表, 添加uid
-- SELECT uid,phone FROM f_user where phone in (SELECT phone FROM e_account_info WHERE uid is null);
UPDATE e_account_info e INNER JOIN 
(
SELECT uid,phone FROM f_user
) u
SET e.uid = u.uid
where e.phone = u.phone;


-- 插入所有的企业子账号 uid, phone
INSERT INTO f_monitor_e_order_temp (uid,phone,cid)
SELECT uid,phone,cid FROM f_user where cid is not null;


-- 更新企业子账户充值记录 - 子账号剩余金额  == 订单表消费金额
UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,SUM(cmoney) cmoney
	FROM e_account_info
	WHERE etype is not null 
	GROUP BY uid
) u
SET e.e_recharge = u.cmoney
WHERE e.uid = u.uid;

UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,amount FROM f_account
) u
SET e.e_balance = u.amount
WHERE e.uid = u.uid;

UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,SUM(ele_price+server_price) a
	FROM f_repair_e_order_history_20180722
	WHERE paytype = 2 
	and ostate = 1 
	GROUP BY uid
) u
SET e.f_consume = u.a
WHERE e.uid = u.uid;

-- 插入所有的企业子账号 uid, phone
INSERT INTO f_monitor_e_order_temp (uid,phone,cid)
SELECT uid,phone,cid FROM f_user where cid is not null;


-- 更新企业子账户充值记录 - 子账号剩余金额  == 订单表消费金额
UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,SUM(cmoney) cmoney
	FROM e_account_info
	WHERE etype is not null 
	GROUP BY uid
) u
SET e.e_recharge = u.cmoney
WHERE e.uid = u.uid;

UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,amount FROM f_account
) u
SET e.e_balance = u.amount
WHERE e.uid = u.uid;

UPDATE f_monitor_e_order_temp e INNER JOIN
(
	SELECT uid,SUM(ele_price+server_price) a
	FROM f_repair_e_order_history_20180722
	WHERE paytype = 2 
	and ostate = 1 
	GROUP BY uid
) u
SET e.f_consume = u.a
WHERE e.uid = u.uid;


-- 插入所有数据
INSERT INTO f_monitor_order_temp (uid,oid,bef_useele,bef_eleprice,bef_serverprice,server_danjia,pileunm,sname)
SELECT p.uid,p.oid,p.useele,p.ele_price,p.server_price,t.serviceprice,p.pilenum,p.sname FROM f_pile_time_price_temp t RIGHT JOIN (SELECT s.sname,s.ptid,s.address,s.createtime stime,p.* FROM f_pile_site s RIGHT JOIN (SELECT p.sid,p.pname,p.pilenum,p.model,p.manufacture,f.uid,f.amount,f.starttime,f.endtime,f.bsoc,f.esoc,f.useele,f.ele_price,f.server_price,f.createtime,f.oid FROM f_repair_e_order_history_20180722 f LEFT JOIN f_pile p on p.pilenum = f.pid WHERE f.paytype = 2 AND f.ostate = 1 AND f.uid NOT IN ( 92, 1064 )) p on s.sid = p.sid) p on t.id = p.ptid ;


-- 查询消费异常的企业子账户
UPDATE f_monitor_e_order_temp SET c_type = '消费正常' where e_recharge-e_balance = f_consume;

-- SELECT p.uid,p.oid,p.useele,p.ele_price,p.server_price,t.serviceprice,p.pilenum,p.sname FROM f_pile_time_price_temp t RIGHT JOIN (SELECT s.sname,s.ptid,s.address,s.createtime stime,p.* FROM f_pile_site s RIGHT JOIN (SELECT p.sid,p.pname,p.pilenum,p.model,p.manufacture,f.uid,f.amount,f.starttime,f.endtime,f.bsoc,f.esoc,f.useele,f.ele_price,f.server_price,f.createtime,f.oid FROM f_repair_e_order_history_20180722 f LEFT JOIN f_pile p on p.pilenum = f.pid WHERE f.paytype = 2 AND f.ostate = 1 AND f.uid NOT IN ( 92, 1064 ) AND f.useele>0 and ele_price!=0) p on s.sid = p.sid) p on t.id = p.ptid where p.server_price =0 and ele_price >210 and oid = 14308 and  p.sname='成都国际机场T2停车场充电站'   ;
-- 

-- 有电量,无服务费,596
-- 1.有电量,无服务费, 服务费=电量/100 * 服务费单价,电费= 之前的电费-计算之后的服务费
UPDATE f_monitor_order_temp 
SET  ele_price = bef_eleprice - ((bef_useele/100) * server_danjia),
	server_price = bef_useele/100 * server_danjia,
	useele = bef_useele,
	remark = '有电量,无服务费, 服务费=电量/100 * 服务费单价,电费= 之前的电费-计算之后的服务费'
WHERE bef_eleprice <> 0 and bef_serverprice = 0 and bef_useele > 0;

-- 有电量,无服务费, 服务费 = 电费 * 单价,电费= 之前的电费-计算后的服务费  
UPDATE f_monitor_order_temp 
SET  server_price = bef_eleprice * server_danjia,
	ele_price = bef_eleprice - bef_eleprice * server_danjia,
	useele = bef_useele,
	remark = '有电量,无服务费, 服务费 = 电费 * 单价,电费= 之前的电费-计算后的服务费'
WHERE bef_eleprice <> 0 and bef_serverprice = 0 and bef_useele > 0 and ele_price < 0;
-- 
-- select * from f_monitor_order_temp 
-- WHERE bef_eleprice <> 0 and bef_serverprice = 0 and bef_useele > 0 and ele_price<0;

-- 2.有电量,有服务费,并且当前电费>210
-- 服务费 = 电量*服务单价 , 电费 = 当前电费/100-电量*服务单价
UPDATE f_monitor_order_temp 
SET server_price = bef_useele/100 * server_danjia,
		ele_price = bef_eleprice/100 - (bef_useele/100 * server_danjia),
		useele = bef_useele,
		remark = '服务费 = 电量*服务单价 , 电费 = 当前电费/100-电量*服务单价'
WHERE bef_useele > 0 and bef_serverprice>0 and bef_eleprice>210;

-- select * from f_monitor_order_temp 
-- WHERE bef_useele > 0 and bef_serverprice>0 and bef_eleprice>210;

-- 3.无电量,无服务费,有电费,场站为:成都国际机场T2停车场充电站
-- 用电量 = 当前电费/1.2 , 电费 = 当前电费/1.2 , 服务费 = 当前电费-(当前电费/1.2) 
UPDATE f_monitor_order_temp 
SET server_price = bef_eleprice - (bef_eleprice / 1.2),
		ele_price = bef_eleprice / 1.2,
		useele = bef_eleprice*100/ 1.2,
		remark = '用电量 = 当前电量/1.2 , 电费 = 当前电量/1.2 , 服务费 = 当前电费-(当前电费/1.2)'
WHERE bef_useele = 0 and bef_serverprice=0 and bef_eleprice>0 and sname = '成都国际机场T2停车场充电站';


-- select * from f_monitor_order_temp 
-- WHERE bef_useele = 0 and bef_serverprice=0 and bef_eleprice>0 and sname = '成都国际机场T2停车场充电站';

-- 4.无电量,有服务费,当电费>210,场站为:成都国际机场T2停车场充电站
-- 用电量 = 当前电费/100/1.2 , 电费 = 当前电费/100/1.2 , 服务费 = 当前电费-(当前电费/1.2) 
UPDATE f_monitor_order_temp 
SET server_price = (bef_eleprice/100) - (bef_eleprice/100/ 1.2),
		ele_price = bef_eleprice/100/ 1.2,
		useele = bef_eleprice/ 1.2,
		remark = '用电量 = 当前电量/1.2 , 电费 = 当前电量/100/1.2 , 服务费 = (当前电费/100)-(当前电费/100/1.2)'
WHERE bef_useele = 0 and bef_serverprice>0 and bef_eleprice>210 and sname = '成都国际机场T2停车场充电站';

-- select * from f_monitor_order_temp 
-- WHERE bef_useele = 0 and bef_serverprice>0 and bef_eleprice>210 and sname != '成都国际机场T2停车场充电站';


-- 没有修改的数据, 更新电费, 电价, 用电量
UPDATE f_monitor_order_temp SET
ele_price = bef_eleprice,
server_price = bef_serverprice,
useele = bef_useele,
remark = '数据正常,未修改'
where remark is null;


-- 根据  f_monitor_order_temp  的oid更新数据库f_order
UPDATE f_repair_e_order_history_20180722 e INNER JOIN
(
	SELECT * FROM f_monitor_order_temp
) u
SET 
e.useele = u.useele,
e.ele_price = u.ele_price,
e.server_price = u.server_price,
e.bef_eleprice = u.bef_eleprice,
e.bef_server_price = u.bef_serverprice,
e.bef_useele = u.bef_useele,
e.ele_price_repair = u.ele_price,
e.server_price_repair = u.server_price,
e.server_danjia = u.server_danjia,
e.repair_createtime = NOW(),
e.repair_remarke = u.remark,
e.repair_user = 'wangqinmin'
WHERE e.oid = u.oid;


UPDATE f_repair_e_order_history_20180722 SET bef_eleprice = ele_price,ele_price =1.73,bef_server_price=server_price,bef_useele = useele,ele_price_repair = ele_price,server_price_repair = server_price,repair_createtime=now(),repair_remarke='手动修改',repair_user='wangqinmin' where oid = 9631;
UPDATE f_repair_e_order_history_20180722 SET bef_eleprice = ele_price,ele_price = 1.00,bef_server_price=server_price,server_price = 0.03,bef_useele = useele,ele_price_repair = ele_price,server_price_repair = '0.03',repair_createtime=now(),repair_remarke='手动修改',repair_user='wangqinmin' where oid = 9687;


-- 更新f_order表中的企业电费+ 服务费拆分
update f_order f INNER JOIN 
(
	SELECT * FROM f_repair_e_order_history_20180722
) h
SET	
	f.useele = h.useele,
	f.ele_price = h.ele_price,
	f.server_price = h.server_price
WHERE 
	f.oid = h.oid;
	


COMMIT;




-- 广西小兔出行/中交信达谦和  太异常(全是广西的2个桩), 只能手动处理
-- uid 为  92, 1064
-- 143条
-- SELECT * FROM f_repair_e_order_history_20180722 where uid in (1064) and paytype = 2 and ostate = 1;
-- SELECT * FROM f_user where uid in (92,1064);
-- -- 18027168060   陈无花  
-- -- 18154590605  广西
-- 
-- SELECT * FROM f_repair_e_order_history_20180722 where paytype = 2 and ostate = 1 and uid = 1064 and (ele_price >0 or server_price<0);
-- 
-- SELECT * FROM f_repair_e_order_history_20180722 where uid in ( SELECT uid FROM f_user where cid = 25);
-- 
-- SELECT * FROM f_monitor_order_temp where remark is null;
-- 
-- 
-- SELECT * FROM f_user_company;
-- SELECT * FROM e_account_info where uid = 1064;




猜你喜欢

转载自blog.csdn.net/chuxin_mm/article/details/84583322