吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2374|回复: 22
收起左侧

[求助] 求大神写个sql

[复制链接]
hppan 发表于 2021-8-25 11:22
50吾爱币
本帖最后由 hppan 于 2021-8-25 11:27 编辑

image.png

求按2-6月分组的数据以及环比数据(4列,当下数据的份和总数,以及同比数据的月份和总数)

查询结果示例:
image.png


以下为示例数据
SET NAMES utf8mb4;

-- ----------------------------
-- Table structure for sales_basic
-- ----------------------------
CREATE TABLE `sales_basic`  (
  `地区` 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,
  `销量` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `日期` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 58 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sales_basic
-- ----------------------------
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090112', 58);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090112', 59);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090112', 60);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090112', 61);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090112', 62);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090112', 63);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090112', 64);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090112', 65);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090112', 66);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090112', 67);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090112', 68);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090112', 69);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090212', 70);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090212', 71);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090212', 72);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090212', 73);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090212', 74);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090212', 75);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090212', 76);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090212', 77);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090212', 78);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090312', 79);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090312', 80);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090312', 81);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090312', 82);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090312', 83);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090312', 84);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090312', 85);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090312', 86);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090312', 87);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090312', 88);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090312', 89);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090312', 90);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090312', 91);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090312', 92);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090312', 93);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090312', 94);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090412', 95);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090412', 96);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090412', 97);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090412', 98);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090412', 99);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090412', 100);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090412', 101);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090412', 102);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090412', 103);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090412', 104);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090412', 105);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090412', 106);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090412', 107);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090412', 108);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090412', 109);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090412', 110);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090512', 111);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090512', 112);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090512', 113);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090512', 114);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090512', 115);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090512', 116);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090512', 117);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090512', 118);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090512', 119);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090512', 120);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090512', 121);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090512', 122);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090512', 123);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090612', 124);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090612', 125);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 126);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090612', 127);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090612', 128);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090612', 129);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090612', 130);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090612', 131);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 132);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 133);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090612', 134);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090612', 135);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090612', 136);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090612', 137);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090612', 138);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 139);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090612', 140);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090612', 141);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090612', 142);
INSERT INTO `sales_basic` VALUES ('浙江', '陈苹', '家电', '电视', '220.0', '20090612', 143);
INSERT INTO `sales_basic` VALUES ('浙江', '赵小米', '家电', '电视', '180.0', '20090612', 144);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 145);
INSERT INTO `sales_basic` VALUES ('江苏', '安娜', '数码产品', '数码相机', '123.0', '20090612', 146);
INSERT INTO `sales_basic` VALUES ('江苏', '丁健', '数码产品', '数码相机', '635.0', '20090612', 147);
INSERT INTO `sales_basic` VALUES ('浙江', '周亚杰', '数码产品', '数码相机', '944.0', '20090612', 148);
INSERT INTO `sales_basic` VALUES ('江苏', '陈羽', '家电', '电冰箱', '234.0', '20090612', 149);


最佳答案

查看完整内容

个人觉得这个条件t.month - 1 = t1.month来进行环比,如果是以楼主的数据跟截图,确实是没问题,但如果有跨年日期的数据,那这个条件就没法查询出来了 这是优化后的写法(如果一定要存在一个月跟上一个月对比,感觉也没必要用到左连接,直接关联查询即可) select t1.month '月份',t1.total '总数',t2.month '月份',t2.total '总数' from ( SELECT SUBSTRING(`日期`,1,6) 'month',count(1) 'total' from sales_basic group by ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Goldrepo 发表于 2021-8-25 11:22
本帖最后由 Goldrepo 于 2021-8-25 13:28 编辑

个人觉得这个条件t.month - 1 = t1.month来进行环比,如果是以楼主的数据跟截图,确实是没问题,但如果有跨年日期的数据,那这个条件就没法查询出来了
这是优化后的写法(如果一定要存在一个月跟上一个月对比,感觉也没必要用到左连接,直接关联查询即可)
select t1.month '月份',t1.total '总数',t2.month '月份',t2.total '总数' from
(
SELECT SUBSTRING(`日期`,1,6) 'month',count(1) 'total' from sales_basic
group by SUBSTRING(`日期`,1,6)
) t1,
(
SELECT SUBSTRING(`日期`,1,6) 'month',count(1) 'total' from sales_basic
group by SUBSTRING(`日期`,1,6)
) t2
-- where t1.month-1 = t2.month
where t1.month = SUBSTRING(DATE_FORMAT(DATE_ADD(STR_TO_DATE(CONCAT(t2.month,'01'),'%Y%m%d'),interval 1 month),'%Y%m%d'),1,6)
order by t1.month

PS:最下面的1:1对比的数据是自己加的跨年数据
Snipaste_2021-08-25_13-26-59.png
梓沐 发表于 2021-8-25 11:39
SELECT *
  FROM (SELECT substr(日期, 1, 6) MONTH, COUNT(1) total
          FROM sales_basic
         WHERE 日期 >= '20090201'
           AND 日期 <= '20090630'
         GROUP BY substr(日期, 1, 6)) t
  LEFT JOIN (SELECT substr(日期, 1, 6) MONTH, COUNT(1) total
               FROM sales_basic
              GROUP BY substr(日期, 1, 6)) t1
    ON t.month - 1 = t1.month

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
hppan + 1 + 1 谢谢@Thanks!

查看全部评分

梓沐 发表于 2021-8-25 11:39
本帖最后由 梓沐 于 2021-8-25 11:41 编辑

如上如上
冰吻丶⒛⒓ 发表于 2021-8-25 11:55
如上如上
qianshang666 发表于 2021-8-25 11:57
如上如上
hkdgyyl 发表于 2021-8-25 12:33
梓沐 发表于 2021-8-25 11:39
SELECT *
  FROM (SELECT substr(日期, 1, 6) MONTH, COUNT(1) total
          FROM sales_basic

分组 左连接  厉害
jlm2840 发表于 2021-8-25 12:50
这个简单,我也会呀
如上如上
sltalex 发表于 2021-8-25 13:18
再来个需求呗,我也来写个
mmcc1984 发表于 2021-8-25 13:29
2楼大手子  厉害  向大佬学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表