首页 > 解决方案 > 给定这张表,如何确定下一个交货日?SQL

问题描述

我有这张表,其中列出了一个地区可用的交货天数。还给出了订单日期和具有相同订单日期和交货日期的商店的数量。

CREATE TABLE table1
(`order_date` date, `area` varchar(20), `delivery_days` varchar(20), `stores` int)
;

INSERT INTO table1
(`order_date`, `area`, `delivery_days`, `stores`)

VALUES
('2020-11-22', 'A', '1,3,5', 17),
('2020-11-25', 'A', '1,3,5', 4),
('2020-11-26', 'B', '2,4,6', 9),
('2020-11-28','B', '2,4,6', 6);

您可以将可用的交货天数解读为(周一为 1,周二为 2,周三为 3...周六为 6)。

话虽如此,如果来自 A 区的商店在 2020-11-22 星期日订购,则最近的交货日是第二天,1 星期一。如果同一地区的商店在 2020-11-25 星期三下单,则最近的交货日为上述日期后的 2 天,即星期五 5 日。

order_date  area    delivery_days   stores
2020-11-22   A       1,3,5           17
2020-11-25   A       1,3,5           4
2020-11-26   B       2,4,6           9
2020-11-28   B       2,4,6           6

我想做的是将这些信息汇总到一个看起来像这样的表中——其中每列计算属于交付类别的商店数量,然后获得相对于商店总数的百分比。

area   total_stores  next_day_delivery   percent   2_day_delivery   percent   3_day_delivery   percent
A       21           17                  81        4                19             
B       15                                         9                60        6                40          

我怎样才能做到这一点?这是 sqlfiddle:http ://sqlfiddle.com/#!9/784e1/1

标签: mysqlsql

解决方案


推荐阅读