首页 > 其他 > 详细

临时表添加以及优化

时间:2019-02-22 23:25:23      阅读:192      评论:0      收藏:0      [点我收藏+]
-- ALTER TABLE  `大润发数据测试对比` ADD `消费日期` datetime DEFAULT NULL

DELETE
FROM
    `大润发数据测试对比`;

DROP TABLE base ;

CREATE TEMPORARY TABLE base SELECT
    a.salesdepart_id AS 门店ID,
    b.`name` AS 会员姓名,
    b.mobile AS 手机号码,
    b.create_date AS 注册日期,
    ROUND(a.real_pay / 10000, 2) AS 消费金额,
        a.sales_date AS 消费日期 ,
    COUNT(a.id) AS 消费次数
FROM
    arm_changsha.goods_sales AS a
LEFT JOIN arm_changsha.ms_member_def AS b ON b.id = a.member_id
WHERE
    b.create_date >= 2019-01-17 00:00:00
AND b.create_date <= 2019-01-30 23:59:59
AND a.salesdepart_id = 1008
AND a.sales_type = 1
AND   ROUND(a.real_pay / 10000, 2) > 10
GROUP BY
    b.mobile;

SELECT * FROM base;


-- 选取临时表时,直接选取字段.不用写前缀那些东西. 这个最基础的都不知道.也是醉了.服了你.
--  业务存在会员在创建的时候没有购买东西,而后在后续的时间内购买的东西 选取的应该是固定时间段内的会员购买量. 一月注册的二月再买东西不应该算在内.
#写入会员基本信息
INSERT INTO `大润发数据测试对比` (
    门店ID,
    会员姓名,
    手机号码,
    注册日期,
    消费金额,
        消费日期,
    消费次数
) SELECT
    门店ID,
     会员姓名,
     手机号码,
     注册日期,
     消费金额,
        消费日期 ,
     消费次数
FROM
    base AS a
WHERE
    消费日期  >= 2019-01-17 00:00:00
AND  消费日期 <= 2019-01-30 23:59:59;


/*随机一半人发券
UPDATE `大润发数据测试对比` AS a
INNER JOIN(
SELECT *
FROM
`大润发2月第二周_copy`
ORDER BY
RAND(手机号码)
LIMIT 0,49)b
SET a.`是否发券` = ‘是‘
WHERE
b.手机号码 = a.手机号码;*/



#补充发券日期
-- UPDATE `大润发数据测试对比` AS a
-- SET a.`发券日期` = ‘2019-01-14‘
-- WHERE
--     a.`是否发券` = ‘是‘;



#写入T+7复购金额
UPDATE `大润发数据测试对比` AS a
SET a.`T+7消费金额` = (
    SELECT
        ROUND(SUM(b.real_pay) / 10000, 2) AS 累计消费金额
    FROM
        arm_changsha.goods_sales AS b
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = b.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-01-31 00:00:00
    AND b.create_date <= 2019-02-13 23:59:59
    AND b.sales_type = 1
    GROUP BY
        b.member_id
);

#写入T+7购买次数
UPDATE `大润发数据测试对比` AS a
SET a.`T+7消费次数` = (
    SELECT
        COUNT(DISTINCT b.sales_id)
    FROM
        arm_changsha.goods_sales_detail AS b
    LEFT JOIN arm_changsha.goods_sales AS d ON d.id = b.sales_id
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = d.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-02-14 00:00:00
    AND b.create_date <= 2019-02-20 23:59:59
    AND d.sales_type = 1
);

#写入T+14复购金额
UPDATE `大润发数据测试对比` AS a
SET a.`T+14消费金额` = (
    SELECT
        ROUND(SUM(b.real_pay) / 10000, 2) AS 累计消费金额
    FROM
        arm_changsha.goods_sales AS b
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = b.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-02-14 00:00:00
    AND b.create_date <= 2019-02-27 23:59:59
    AND b.sales_type = 1
    GROUP BY
        b.member_id
);

#写入T+14购买次数
UPDATE `大润发数据测试对比` AS a
SET a.`T+14消费次数` = (
    SELECT
        COUNT(DISTINCT b.sales_id)
    FROM
        arm_changsha.goods_sales_detail AS b
    LEFT JOIN arm_changsha.goods_sales AS d ON d.id = b.sales_id
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = d.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-02-14 00:00:00
    AND b.create_date <= 2019-02-27 23:59:59
    AND d.sales_type = 1
);

#写入T+30复购金额
UPDATE `大润发数据测试对比` AS a
SET a.`T+30消费金额` = (
    SELECT
        ROUND(SUM(b.real_pay) / 10000, 2) AS 累计消费金额
    FROM
        arm_changsha.goods_sales AS b
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = b.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-02-14 00:00:00
    AND b.create_date <= 2019-03-15 23:59:59
    AND b.sales_type = 1
    GROUP BY
        b.member_id
);

#写入T+30购买次数
UPDATE `大润发数据测试对比` AS a
SET a.`T+30消费次数` = (
    SELECT
        COUNT(DISTINCT b.sales_id)
    FROM
        arm_changsha.goods_sales_detail AS b
    LEFT JOIN arm_changsha.goods_sales AS d ON d.id = b.sales_id
    LEFT JOIN arm_changsha.ms_member_def AS c ON c.id = d.member_id
    WHERE
        c.mobile = a.手机号码
    AND b.create_date >= 2019-02-14 00:00:00
    AND b.create_date <= 2019-03-15 23:59:59
    AND d.sales_type = 1
);

mysql 临时表添加.以及操作案例.

其实最后选取临时表时.直接写字段就好.不用那么麻烦. 说到底还是语法基础太弱.常识都不知道.

 

临时表添加以及优化

原文:https://www.cnblogs.com/sakura3/p/10421135.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!