SQL问题
1)查询订单申请时间在2020年4月份和5月份,各申请人的合计订单总额,结果以订单总额降序排序 2)去除英国、法国的订单,查询各年月的订单申请总额 mysql数据库
订单表的建表语句:
CREATE TABLE `订单` (
`订单ID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`订单申请时间` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`订单申请人` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`订单收货国家` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of 订单
-- ----------------------------
INSERT INTO `订单` VALUES ('1001', '2020-04-01 16:58:28.000', 'A', '中国');
INSERT INTO `订单` VALUES ('1002', '2020-05-14 16:58:38.000', 'A', '美国');
INSERT INTO `订单` VALUES ('1003', '2020-05-20 16:58:47.000', 'B', '英国');
INSERT INTO `订单` VALUES ('1004', '2020-06-10 16:58:53.000', 'C', '中国');
INSERT INTO `订单` VALUES ('1005', '2020-04-23 16:58:58.000', 'D', '法国');
INSERT INTO `订单` VALUES ('1006', '2020-06-09 16:58:53.000', 'C', NULL);
SET FOREIGN_KEY_CHECKS = 1
订单明细的建表语句:
CREATE TABLE `订单明细` (
`订单ID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`产品ID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`产品数量` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`产品单价` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of 订单明细
-- ----------------------------
INSERT INTO `订单明细` VALUES ('1001', '001', '5', '6');
INSERT INTO `订单明细` VALUES ('1001', '002', '8', '23');
INSERT INTO `订单明细` VALUES ('1002', '003', '12', '17');
INSERT INTO `订单明细` VALUES ('1003', '001', '3', '6');
INSERT INTO `订单明细` VALUES ('1003', '004', '4', '36');
INSERT INTO `订单明细` VALUES ('1004', '005', '9', '15');
INSERT INTO `订单明细` VALUES ('1004', '002', '14', '23');
INSERT INTO `订单明细` VALUES ('1005', '003', '23', '17');
INSERT INTO `订单明细` VALUES ('1006', '003', '14', '17');
SET FOREIGN_KEY_CHECKS = 1;
上方需求如何实现
SELECT 订单.订单申请人, SUM(订单明细.产品数量 * 订单明细.产品单价) AS 订单总额
FROM 订单
INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
WHERE 订单.订单申请时间 BETWEEN '2020-04-01' AND '2020-05-31'
AND 订单.订单收货国家 NOT IN ('英国', '法国')
GROUP BY 订单.订单申请人
ORDER BY 订单总额 DESC;
##
SELECT DATE_FORMAT(订单.订单申请时间, '%Y-%m') AS 年月, SUM(订单明细.产品数量 * 订单明细.产品单价) AS 订单总额
FROM 订单
INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
WHERE 订单.订单收货国家 NOT IN ('英国', '法国')
GROUP BY 年月
ORDER BY 年月;