栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何按连续数据分组(在这种情况下为日期)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何按连续数据分组(在这种情况下为日期)

http://sqlfiddle.com/#!2/20108/1

这是完成工作的存储过程

CREATE PROCEDURE myProc()BEGIN    -- Drop and create the temp table    DROP TABLE IF EXISTS reached;    CREATE TABLE reached (    sku CHAr(32) PRIMARY KEY,    record_date date,    nb int,    total int)   ENGINE=HEAP;-- Initial insert, the starting point is the MAX sales record_date of each productINSERT INTO reached SELECT products.sku, max(sales.record_date), 0, 0FROM productsjoin sales on sales.sku = products.skugroup by products.sku;-- loop until there is no more updated rowsiterloop: LOOP    -- Update the temptable with the values of the date - 1 row if found    update reached    join sales on sales.sku=reached.sku and sales.record_date=reached.record_date    set reached.record_date = reached.record_date - INTERVAL 1 day,         reached.nb=reached.nb+1,         reached.total=reached.total + sales.items;    -- If no more rows are updated it means we hit the most longest days_sold    IF ROW_COUNT() = 0 THEN        LEAVE iterloop;    END IF;END LOOP iterloop;-- select the results of the temp tableSELECT products.sku, products.title, products.price, reached.total as sales, reached.nb as days_sold from reachedjoin products on products.sku=reached.sku;END//

那你只需要做

call myProc()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号