使用 DML语句,对 “锦图网” 数据进行操作,聚合函数练习
查看本章节
查看作业目录
需求说明:
- 根据客户 ID 统计订单数、订单总金额、最高订单金额、最低订单金额和每份订单平均金额,并按订单总金额升序显示
- 根据客户统计订单总订购人次数> 5 的统计信息
根据以上要求对 “锦图网” 数据进行操作:
客户表(customer)
-- ----------------------------
-- Table structure for `customer`
-- ----------------------------
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (`customerID` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`gender` varchar(50) DEFAULT NULL,`identityID` varchar(18) DEFAULT NULL,`tel` varchar(18) DEFAULT NULL,PRIMARY KEY (`customerID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO `customer` VALUES ('1', '魏国兰', '女', '420103198309125344', '13923561234');
INSERT INTO `customer` VALUES ('2', '刘亚蒙', '男', '420105197610200916', '13867893421');
INSERT INTO `customer` VALUES ('3', '郝琼琼', '女', '420104198703125881', '15902712563');
INSERT INTO `customer` VALUES ('4', '雷亚波', '男', '420103199806195830', '13686035678');
INSERT INTO `customer` VALUES ('5', '李慧娟', '女', '420106199208113738', '13798235671');
线路类型表(lineType)
-- ----------------------------
-- Table structure for `linetype`
-- ----------------------------
DROP TABLE IF EXISTS `linetype`;
CREATE TABLE `linetype` (`lineTypeID` int(11) NOT NULL AUTO_INCREMENT,`typeName` varchar(50) DEFAULT NULL,PRIMARY KEY (`lineTypeID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of linetype
-- ----------------------------
INSERT INTO `linetype` VALUES ('1', '国内短线游');
INSERT INTO `linetype` VALUES ('2', '国内长线游');
INSERT INTO `linetype` VALUES ('3', '出境游');
线路表(line)
-- ----------------------------
-- Table structure for `line`
-- ----------------------------
DROP TABLE IF EXISTS `line`;
CREATE TABLE `line` (`lineID` int(11) NOT NULL AUTO_INCREMENT,`lineTypeID` int(11) DEFAULT NULL,`lineName` varchar(50) NOT NULL,`days` int(11) DEFAULT NULL,`price` decimal(10,2) DEFAULT NULL,`vehicle` char(10) DEFAULT NULL,`hotel` char(10) DEFAULT NULL,`hasMeal` char(2) DEFAULT NULL,PRIMARY KEY (`lineID`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of line
-- ----------------------------
INSERT INTO `line` VALUES ('1', '1', '黄陂木兰天池', '1', '159.00', '大巴', '无', '无');
INSERT INTO `line` VALUES ('2', '1', '大别山天堂寨', '2', '429.00', '大巴', '二星级', '无');
INSERT INTO `line` VALUES ('5', '1', '恩施大峡谷', '4', '1089.00', '火车卧铺', '二星级', '无');
INSERT INTO `line` VALUES ('6', '1', '庐山', '2', '729.00', '大巴', '二星级', '含');
INSERT INTO `line` VALUES ('7', '1', '凤凰古城', '3', '959.00', '火车卧铺', '二星级', '含');
INSERT INTO `line` VALUES ('8', '1', '黄山', '3', '1099.00', '动车', '三星级', '含');
INSERT INTO `line` VALUES ('9', '2', '海南岛三亚', '5', '3868.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('10', '2', '青岛蓬莱', '4', '2680.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('12', '2', '桂林', '5', '1920.00', '火车卧铺', '二星级', '无');
INSERT INTO `line` VALUES ('13', '2', '华东五市', '6', '2856.00', '动车', '三星级', '含');
INSERT INTO `line` VALUES ('14', '2', '成都九寨沟', '7', '4500.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('15', '2', '西安', '4', '2180.00', '动车', '三星级', '无');
INSERT INTO `line` VALUES ('16', '3', '欧洲德法意瑞', '13', '12294.91', '飞机', '四星级', '含');
INSERT INTO `line` VALUES ('17', '3', '日本东京富士山', '6', '7119.09', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('18', '3', '新马泰', '8', '6058.80', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('19', '3', '美国夏威夷', '6', '11493.90', '飞机', '四星级', '无');
INSERT INTO `line` VALUES ('20', null, '梁子湖游', '1', '168.00', '大巴', '无', '无');
INSERT INTO `line` VALUES ('21', null, '洪湖游', '1', '128.00', '大巴', '无', '无');
订单表(orders)
-- ----------------------------
-- Table structure for `orders`
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (`ordersID` int(11) NOT NULL AUTO_INCREMENT,`customerID` int(11) DEFAULT NULL,`ordersDate` date DEFAULT NULL,`amount` decimal(8,2) DEFAULT NULL,`man_times` int(11) DEFAULT NULL,`discount` decimal(8,2) DEFAULT NULL,`effectiveAmount` decimal(8,2) DEFAULT NULL,PRIMARY KEY (`ordersID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of orders
-- ----------------------------
INSERT INTO `orders` VALUES ('1', '1', '2018-10-20', '798.00', '2', '0.98', '782.04');
INSERT INTO `orders` VALUES ('2', '1', '2018-01-15', '1898.00', '2', '0.98', '1860.04');
INSERT INTO `orders` VALUES ('3', '2', '2018-06-18', '2574.00', '6', '0.96', '2471.04');
INSERT INTO `orders` VALUES ('4', '3', '2018-08-21', '2856.00', '1', '1.00', '2856.00');
INSERT INTO `orders` VALUES ('5', '4', '2018-10-10', '7698.00', '4', '0.96', '7390.08');
INSERT INTO `orders` VALUES ('6', '5', '2018-06-23', '6732.00', '1', '1.00', '6732.00');
INSERT INTO `orders` VALUES ('7', '3', '2018-10-11', '4360.00', '2', '0.98', '4272.80');
INSERT INTO `orders` VALUES ('8', '4', '2018-11-21', '12771.00', '1', '1.00', '12771.00');
INSERT INTO `orders` VALUES ('9', '4', '2013-12-20', '899.00', '1', '0.98', '881.02');
订单客户明细表(oc_detail)
-- ----------------------------
-- Table structure for `oc_detail`
-- ----------------------------
DROP TABLE IF EXISTS `oc_detail`;
CREATE TABLE `oc_detail` (`travelCustomerID` int(11) NOT NULL,`ordersID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of oc_detail
-- ----------------------------
INSERT INTO `oc_detail` VALUES ('1', '1');
INSERT INTO `oc_detail` VALUES ('1', '2');
INSERT INTO `oc_detail` VALUES ('2', '3');
INSERT INTO `oc_detail` VALUES ('2', '5');
INSERT INTO `oc_detail` VALUES ('2', '7');
INSERT INTO `oc_detail` VALUES ('3', '3');
INSERT INTO `oc_detail` VALUES ('3', '4');
INSERT INTO `oc_detail` VALUES ('3', '7');
INSERT INTO `oc_detail` VALUES ('4', '3');
INSERT INTO `oc_detail` VALUES ('4', '5');
INSERT INTO `oc_detail` VALUES ('4', '8');
INSERT INTO `oc_detail` VALUES ('4', '9');
INSERT INTO `oc_detail` VALUES ('5', '1');
INSERT INTO `oc_detail` VALUES ('5', '6');
订单线路明细表(ol_detail)
-- ----------------------------
-- Table structure for `ol_detail`
-- ----------------------------
DROP TABLE IF EXISTS `ol_detail`;
CREATE TABLE `ol_detail` (`ordersID` int(11) NOT NULL,`lineID` int(11) NOT NULL,`travelDate` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of ol_detail
-- ----------------------------
INSERT INTO `ol_detail` VALUES ('1', '2', '2018-10-27');
INSERT INTO `ol_detail` VALUES ('2', '5', '2018-01-20');
INSERT INTO `ol_detail` VALUES ('2', '7', '2018-02-01');
INSERT INTO `ol_detail` VALUES ('3', '1', '2018-06-26');
INSERT INTO `ol_detail` VALUES ('3', '6', '2018-07-05');
INSERT INTO `ol_detail` VALUES ('4', '13', '2018-08-29');
INSERT INTO `ol_detail` VALUES ('5', '1', '2018-10-16');
INSERT INTO `ol_detail` VALUES ('5', '14', '2018-10-21');
INSERT INTO `ol_detail` VALUES ('6', '18', '2018-07-10');
INSERT INTO `ol_detail` VALUES ('7', '15', '2018-10-19');
INSERT INTO `ol_detail` VALUES ('8', '19', '2018-11-27');
INSERT INTO `ol_detail` VALUES ('9', '7', '2018-12-28');
实现代码:
根据客户 ID 统计订单数、订单总金额、最高订单金额、最低订单金额和每份订单平均金额,并按订单总金额升序显示
select customerID 客户 ID, count(ordersID) 订单数 , sum(amount) 订单总金额 ,max(amount) 最高订单金额 ,min(amount) 最低订单金额 , avg(amount) 每份订单平均金额 from orders group by customerID order by 订单总金额
根据客户统计订单总订购人次数> 5 的统计信息
select customerID 客户 ID, sum(man_times) 总订购人次数 from orders group by customerID having sum(man_times)>5
“锦图网” 完整数据库:
SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for `customer`
-- ----------------------------
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (`customerID` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`gender` varchar(50) DEFAULT NULL,`identityID` varchar(18) DEFAULT NULL,`tel` varchar(18) DEFAULT NULL,PRIMARY KEY (`customerID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO `customer` VALUES ('1', '魏国兰', '女', '420103198309125344', '13923561234');
INSERT INTO `customer` VALUES ('2', '刘亚蒙', '男', '420105197610200916', '13867893421');
INSERT INTO `customer` VALUES ('3', '郝琼琼', '女', '420104198703125881', '15902712563');
INSERT INTO `customer` VALUES ('4', '雷亚波', '男', '420103199806195830', '13686035678');
INSERT INTO `customer` VALUES ('5', '李慧娟', '女', '420106199208113738', '13798235671');-- ----------------------------
-- Table structure for `line`
-- ----------------------------
DROP TABLE IF EXISTS `line`;
CREATE TABLE `line` (`lineID` int(11) NOT NULL AUTO_INCREMENT,`lineTypeID` int(11) DEFAULT NULL,`lineName` varchar(50) NOT NULL,`days` int(11) DEFAULT NULL,`price` decimal(10,2) DEFAULT NULL,`vehicle` char(10) DEFAULT NULL,`hotel` char(10) DEFAULT NULL,`hasMeal` char(2) DEFAULT NULL,PRIMARY KEY (`lineID`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of line
-- ----------------------------
INSERT INTO `line` VALUES ('1', '1', '黄陂木兰天池', '1', '159.00', '大巴', '无', '无');
INSERT INTO `line` VALUES ('2', '1', '大别山天堂寨', '2', '429.00', '大巴', '二星级', '无');
INSERT INTO `line` VALUES ('5', '1', '恩施大峡谷', '4', '1089.00', '火车卧铺', '二星级', '无');
INSERT INTO `line` VALUES ('6', '1', '庐山', '2', '729.00', '大巴', '二星级', '含');
INSERT INTO `line` VALUES ('7', '1', '凤凰古城', '3', '959.00', '火车卧铺', '二星级', '含');
INSERT INTO `line` VALUES ('8', '1', '黄山', '3', '1099.00', '动车', '三星级', '含');
INSERT INTO `line` VALUES ('9', '2', '海南岛三亚', '5', '3868.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('10', '2', '青岛蓬莱', '4', '2680.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('12', '2', '桂林', '5', '1920.00', '火车卧铺', '二星级', '无');
INSERT INTO `line` VALUES ('13', '2', '华东五市', '6', '2856.00', '动车', '三星级', '含');
INSERT INTO `line` VALUES ('14', '2', '成都九寨沟', '7', '4500.00', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('15', '2', '西安', '4', '2180.00', '动车', '三星级', '无');
INSERT INTO `line` VALUES ('16', '3', '欧洲德法意瑞', '13', '12294.91', '飞机', '四星级', '含');
INSERT INTO `line` VALUES ('17', '3', '日本东京富士山', '6', '7119.09', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('18', '3', '新马泰', '8', '6058.80', '飞机', '三星级', '含');
INSERT INTO `line` VALUES ('19', '3', '美国夏威夷', '6', '11493.90', '飞机', '四星级', '无');
INSERT INTO `line` VALUES ('20', null, '梁子湖游', '1', '168.00', '大巴', '无', '无');
INSERT INTO `line` VALUES ('21', null, '洪湖游', '1', '128.00', '大巴', '无', '无');-- ----------------------------
-- Table structure for `linetype`
-- ----------------------------
DROP TABLE IF EXISTS `linetype`;
CREATE TABLE `linetype` (`lineTypeID` int(11) NOT NULL AUTO_INCREMENT,`typeName` varchar(50) DEFAULT NULL,PRIMARY KEY (`lineTypeID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of linetype
-- ----------------------------
INSERT INTO `linetype` VALUES ('1', '国内短线游');
INSERT INTO `linetype` VALUES ('2', '国内长线游');
INSERT INTO `linetype` VALUES ('3', '出境游');-- ----------------------------
-- Table structure for `oc_detail`
-- ----------------------------
DROP TABLE IF EXISTS `oc_detail`;
CREATE TABLE `oc_detail` (`travelCustomerID` int(11) NOT NULL,`ordersID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of oc_detail
-- ----------------------------
INSERT INTO `oc_detail` VALUES ('1', '1');
INSERT INTO `oc_detail` VALUES ('1', '2');
INSERT INTO `oc_detail` VALUES ('2', '3');
INSERT INTO `oc_detail` VALUES ('2', '5');
INSERT INTO `oc_detail` VALUES ('2', '7');
INSERT INTO `oc_detail` VALUES ('3', '3');
INSERT INTO `oc_detail` VALUES ('3', '4');
INSERT INTO `oc_detail` VALUES ('3', '7');
INSERT INTO `oc_detail` VALUES ('4', '3');
INSERT INTO `oc_detail` VALUES ('4', '5');
INSERT INTO `oc_detail` VALUES ('4', '8');
INSERT INTO `oc_detail` VALUES ('4', '9');
INSERT INTO `oc_detail` VALUES ('5', '1');
INSERT INTO `oc_detail` VALUES ('5', '6');-- ----------------------------
-- Table structure for `ol_detail`
-- ----------------------------
DROP TABLE IF EXISTS `ol_detail`;
CREATE TABLE `ol_detail` (`ordersID` int(11) NOT NULL,`lineID` int(11) NOT NULL,`travelDate` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of ol_detail
-- ----------------------------
INSERT INTO `ol_detail` VALUES ('1', '2', '2018-10-27');
INSERT INTO `ol_detail` VALUES ('2', '5', '2018-01-20');
INSERT INTO `ol_detail` VALUES ('2', '7', '2018-02-01');
INSERT INTO `ol_detail` VALUES ('3', '1', '2018-06-26');
INSERT INTO `ol_detail` VALUES ('3', '6', '2018-07-05');
INSERT INTO `ol_detail` VALUES ('4', '13', '2018-08-29');
INSERT INTO `ol_detail` VALUES ('5', '1', '2018-10-16');
INSERT INTO `ol_detail` VALUES ('5', '14', '2018-10-21');
INSERT INTO `ol_detail` VALUES ('6', '18', '2018-07-10');
INSERT INTO `ol_detail` VALUES ('7', '15', '2018-10-19');
INSERT INTO `ol_detail` VALUES ('8', '19', '2018-11-27');
INSERT INTO `ol_detail` VALUES ('9', '7', '2018-12-28');-- ----------------------------
-- Table structure for `orders`
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (`ordersID` int(11) NOT NULL AUTO_INCREMENT,`customerID` int(11) DEFAULT NULL,`ordersDate` date DEFAULT NULL,`amount` decimal(8,2) DEFAULT NULL,`man_times` int(11) DEFAULT NULL,`discount` decimal(8,2) DEFAULT NULL,`effectiveAmount` decimal(8,2) DEFAULT NULL,PRIMARY KEY (`ordersID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of orders
-- ----------------------------
INSERT INTO `orders` VALUES ('1', '1', '2018-10-20', '798.00', '2', '0.98', '782.04');
INSERT INTO `orders` VALUES ('2', '1', '2018-01-15', '1898.00', '2', '0.98', '1860.04');
INSERT INTO `orders` VALUES ('3', '2', '2018-06-18', '2574.00', '6', '0.96', '2471.04');
INSERT INTO `orders` VALUES ('4', '3', '2018-08-21', '2856.00', '1', '1.00', '2856.00');
INSERT INTO `orders` VALUES ('5', '4', '2018-10-10', '7698.00', '4', '0.96', '7390.08');
INSERT INTO `orders` VALUES ('6', '5', '2018-06-23', '6732.00', '1', '1.00', '6732.00');
INSERT INTO `orders` VALUES ('7', '3', '2018-10-11', '4360.00', '2', '0.98', '4272.80');
INSERT INTO `orders` VALUES ('8', '4', '2018-11-21', '12771.00', '1', '1.00', '12771.00');
INSERT INTO `orders` VALUES ('9', '4', '2013-12-20', '899.00', '1', '0.98', '881.02');-- ----------------------------
-- View structure for `v_customer_orderline_detail`
-- ----------------------------
DROP VIEW IF EXISTS `v_customer_orderline_detail`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v_customer_orderline_detail` AS select `c`.`name` AS `客户名`,`l`.`lineName` AS `线路名`,`l`.`days` AS `行程天数`,`l`.`price` AS `价格` from (((`customer` `c` join `oc_detail` `ocd`) join `ol_detail` `old`) join `line` `l`) where ((`c`.`customerID` = `ocd`.`travelCustomerID`) and (`ocd`.`ordersID` = `old`.`ordersID`) and (`old`.`lineID` = `l`.`lineID`)) ;-- ----------------------------
-- View structure for `v_customer_orders_detail`
-- ----------------------------
DROP VIEW IF EXISTS `v_customer_orders_detail`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v_customer_orders_detail` AS select `c`.`name` AS `name`,`l`.`lineName` AS `lineName`,`l`.`days` AS `days`,`l`.`price` AS `price` from (((`customer` `c` join `oc_detail` `ocd`) join `ol_detail` `old`) join `line` `l`) where ((`c`.`customerID` = `ocd`.`travelCustomerID`) and (`ocd`.`ordersID` = `old`.`ordersID`) and (`old`.`lineID` = `l`.`lineID`)) ;-- ----------------------------
-- View structure for `v_nums_line`
-- ----------------------------
DROP VIEW IF EXISTS `v_nums_line`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v_nums_line` AS select `l`.`lineName` AS `线路`,count(`old`.`lineID`) AS `预订数` from (`line` `l` join `ol_detail` `old`) where (`l`.`lineID` = `old`.`lineID`) group by `l`.`lineName` ;-- ----------------------------
-- Procedure structure for `proc_adjust_price`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_adjust_price`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_adjust_price`(out oldPrice decimal, -- 原价out newPrice decimal, -- 现价out lineName_maxPrice varchar(50) -- 价格最高国内长线游线路名
)MODIFIES SQL DATA
begindeclare lineID_maxPrice int; -- 价格最高国内长线游线路编号select max(price) into oldPrice from line where lineTypeID=(select lineTypeID from linetype where typeName='国内长线游');select lineID, lineName into lineID_maxPrice, lineName_maxPrice from line where price=oldPrice and lineTypeID=(select lineTypeID from linetype where typeName='国内长线游');if oldPrice<3000 thenset newPrice=oldPrice;elseif oldPrice>=3000 and oldPrice<4000 thenset newPrice=oldPrice*0.95;elseif oldPrice>=4000 and oldPrice<5000 thenset newPrice=oldPrice*0.93;elseset newPrice=oldPrice*0.90;end if;if newPrice<>oldPrice thenupdate line set price=newPrice where lineID=lineID_maxPrice;end if;
end
;;
DELIMITER ;-- ----------------------------
-- Procedure structure for `proc_deleteLineType`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_deleteLineType`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_deleteLineType`(_typeName varchar(20) -- 线路类型名称
)MODIFIES SQL DATA
begindeclare state varchar(20);declare _lineTypeID int; -- 线路类型编号-- 定义错误处理declare continue handler for sqlexception set state='error';select lineTypeID into _lineTypeID from LineType where typeName=_typeName;-- 开启事务
start transaction;-- 将线路中所需要删除的线路类型的编号置为NULLupdate line set lineTypeID=NULL where lineTypeID=_lineTypeID;if(state='error') thenselect '线路信息修改失败';rollback;elsedelete from LineType where typeName=_typeName;if(state='error') thenselect '线路类型删除失败';rollback;elseselect '线路类型删除成功';commit;end if;end if;
end
;;
DELIMITER ;-- ----------------------------
-- Procedure structure for `proc_LineDetail`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_LineDetail`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_LineDetail`(_lineName varchar(20)
)READS SQL DATA
beginselect lineName 线路名, days 行程天数, price 价格, vehicle 交通工具, hotel 住宿标准 from line where lineName=_lineName;
end
;;
DELIMITER ;-- ----------------------------
-- Procedure structure for `proc_LineNumsRate`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_LineNumsRate`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_LineNumsRate`(_typeName varchar(20), out numsRate decimal(10,3)
)READS SQL DATA
begindeclare totalNum int; -- 定义全部线路数
declare num int; -- 定义指定类型的线路数select count(*) into totalNum from line;select count(*) into num from line L, linetype LT where L.lineTypeID=LT.lineTypeID
and LT.typeName=_typeName;-- 生成指定类型的线路数与全部线路数之比,赋给输出参数numsRateset numsRate=num*1.0/totalNum;
end
;;
DELIMITER ;-- ----------------------------
-- Procedure structure for `proc_NumsGivenLineType`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_NumsGivenLineType`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_NumsGivenLineType`(_typeName varchar(20), out count int -- 输出参数,用于输出指定线路类型的总预订数
)READS SQL DATA
beginselect count(OLD.lineID) into count from ol_detail OLD, line L, lineType LTwhere OLD.lineID=L.lineID and L.lineTypeID=LT.lineTypeID and typeName=_typeName;
end
;;
DELIMITER ;-- ----------------------------
-- Procedure structure for `proc_PriceModify`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_PriceModify`;
DELIMITER ;;
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `proc_PriceModify`()MODIFIES SQL DATA
begindeclare _lineID int; declare _days int; -- 线路旅程天数declare reduce_money decimal(10,2); -- 减免的住宿费declare state varchar(20); -- 错误状态declare line_cursor1 cursor for select lineID, days from line where hotel='二星级';declare continue handler for 1329 set state='error';open line_cursor1;traverse_line:while true dofetch line_cursor1 into _lineID, _days; if(state='error') thenleave traverse_line;end if;set reduce_money=(_days-1)*30;update line set price=price-reduce_money where lineID=_lineID;end while;close line_cursor1;
end
;;
DELIMITER ;
使用 DML语句,对 “锦图网” 数据进行操作,聚合函数练习相关推荐
- 使用 DML语句,对 “锦图网” 数据进行操作,连接查询(内连接,左外连接,右外连接,全连接)
查看本章节 查看作业目录 需求说明: 对 "锦图网" 数据进行操作: 统计每一种线路类型的线路数量.最高线路价格.最低线路价格和平均线路价格,要求按照线路数量和平均线路价格升序显示 ...
- 使用 DML语句,对 “锦图网
SELECT typeName 线路类型名,COUNT(old.lineID) 线路订购数量,ROUND(AVG(price),2) 平均线路订购价格(元) FROM line l,linetype ...
- 查询数据(使用聚合函数,还是单表)
转载于:https://www.cnblogs.com/wangshen31/p/6792627.html
- ADO.NET学习笔记--数据汇总(聚合函数)
SQL聚合函数: 1.MAX(最大值) 2.MIN(最小值) 3.AVG(平均值) 4.SUN(和) 5.COUNT(数量) 转载于:https://www.cnblogs.com/DaiMaDi/a ...
- mysql 查看 dml,MySQL系列-DML语句
MySQL系列-DML语句 运维少年 运维少年 系列文章说明 MySQL系列文章包含了软件安装.具体使用.备份恢复等内容,主要用于记录个人的学习笔记,主要使用的MySQL版本为5.7.28,服务器系统 ...
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
- SQL语言之DML语句
数据库版本:MySQL8 文章目录 一.DML语句简介 二.DML语句的使用 1.INSERT操作 2.UPDATE 操作 3.DELETE操作 一.DML语句简介 DML语句是对基本表中的数据进行增 ...
- SQL Server数据库关系图和数据库中数据的操作(添加,查询,修改,删除)
文章目录 一.创建数据库关系图 二.数据的操作 1.添加数据 (1) 添加单行数据 (2) 添加多行数据 2.简单查询数据 3.修改数据 4.删除数据 5.还原数据表 三.数据库的设计 1.主键的选择 ...
- mysql where不能用聚合函数_Mysql聚合函数对where语句筛选结果的影响
未用聚合函数时 select create_date FROM unlimited_user_history WHERE 1 != 1; 筛选结果为0件 但是用了聚合函数 select M ...
最新文章
- 进程间通信——自定义消息方式实现(SetWindowsHookEx)
- [QPlugins]学习大纲
- c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
- Python3+Selenium3自动化测试-(一)
- 网络爬虫--9.正则表达式
- Windows下Ionic Android开发环境搭建
- 用eclipse调用远程webservice生成客户端代码
- 20200308模拟赛
- java myqq ui_myqq: Java版SWing“高”仿QQ即时通聊天系统
- CentOS安装微软雅黑字体
- 醉林疯的OJ 1058: 求解不等式
- 【源码】自主机器人路径规划仿真器(FAMU-FSU工程学院自主移动机器人项目)
- easyui treegrid实现的两种方式
- C. Edgy Trees(并查集+细节)
- 【北亚数据恢复】不认盘的移动硬盘恢复数据案例解决方案
- SLM—仿真过程与数据管理平台
- 51Nod 1298 圆与三角形
- 01 flv 的 binary 解析
- ARouter疑难杂症
- 浏览器主页被360锁定 - 解决方案
热门文章
- Sql Server 2000 补丁惹的获
- lol1.7更新服务器维护,LOL7.1版本更新时间_2017LOL1月7.1版本更新内容介绍_牛游戏网...
- 3D射影几何和射影变换
- java计算机毕业设计山西工艺美术馆源代码+数据库+系统+lw文档
- photoshop第十二章:制作唯美效果
- FFmpeg教程(三)视频解码器
- OSChina 周日乱弹 —— 没时间 没头发 但有钱
- 青春不是年华,而是心境
- 关于h5页面苹果手机使用fixed定位tabbar最底部时遮挡内容问题
- 华为牛人的成长经历,永远记得那些IT界吃咋风云的人物!