2020-11-02L 228. 汇总区间

var summaryRanges = function(arr) {
    let len = arr.length;
    let arr1 = [];
    let i = 0;
    while(i < len){
        let a = arr[i];
        let b = ''; 
        let flag = false;
        while(arr[i] + 1 == arr[i + 1]){
            i++;
            flag = true;
        }
        if(flag){
            b = "->" + arr[i];
        }
        arr1.push(a + b) ;
        i++;
    }
    return arr1;
};

JS里面不能有空值,比如空字符串 var a = "";  但不能是var a;  ,其他类型的变量也一样

这个查询的主要目的是统计在 2022 年双十一期间购买某个子品牌下某个商品的新顾客数量和新顾客购买该商品的实付金额。以下是一些优化建议: 1. 索引优化:为了加速查询,可以考虑给 `天猫官旗有效数据` 表的 `支付日期` 和 `用户id` 字段创建联合索引,以及给 `old_c` 表的 `支付日期` 和 `用户id` 字段创建联合索引。同时,根据查询语句中的 `WHERE` 和 `GROUP BY` 条件,可以为 `子品牌` 和 `商品数字ID` 字段单独创建索引。 2. 子查询优化:当前查询中使用了一个子查询,即 `SELECT COUNT(DISTINCT o.用户id) AS new_customer_num, SUM(o.商品实付金额) AS new_customer_商品实付金额 FROM 天猫官旗有效数据 o LEFT JOIN 天猫官旗有效数据 old_c ON o.用户id = old_c.用户id AND old_c.支付日期 BETWEEN '2021-10-31' AND '2022-10-30' WHERE o.支付日期 >= '2022-10-31' AND o.支付日期 <= '2022-11-11' AND old_c.用户id IS NULL`。这个子查询中有两个子查询,其中一个使用了 `LEFT JOIN`,可能会导致性能问题。可以考虑将这个子查询拆分成两个独立的查询,分别计算新顾客数量和新顾客购买的实付金额。 3. ROLLUP 优化:当前查询中使用了 `WITH ROLLUP`,即对 `子品牌` 和 `商品数字ID` 字段进行了汇总。如果数据量很大,这可能会导致性能问题。可以考虑在程序中对查询结果进行汇总,而不是在 SQL 中使用 `WITH ROLLUP`。 综上所述,可以尝试以下 SQL 查询: ``` SELECT 子品牌, 商品数字ID, COUNT(DISTINCT o.用户id) AS new_customer_num, SUM(o.商品实付金额) AS new_customer_商品实付金额 FROM 天猫官旗有效数据 o LEFT JOIN 天猫官旗有效数据 old_c ON o.用户id = old_c.用户id AND old_c.支付日期 BETWEEN '2021-10-31' AND '2022-10-30' WHERE o.支付日期 >= '2022-10-31' AND o.支付日期 <= '2022-11-11' AND old_c.用户id IS NULL GROUP BY 子品牌, 商品数字ID ORDER BY 子品牌, 商品数字ID; ``` 如果数据量很大,可以考虑分页查询,或者在程序中对查询结果进行汇总
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值