MySQL_杭州11月1-29号在线产品在线天数、销售天数_20161129

时间:2022-08-29 13:20:56

杭州11月1-29号在线产品在线天数、销售天数

1、产品在这个时间段内的每一天的在线情况,然后聚合计算每个产品的在线天数,每一天的在线情况 如果在线记为1,不在线为null

2、计算每个产品在这个时间段内每天订单情况 再聚合计算每个产品的销售天数 每一天的订单额

3、将步骤1作为主表 步骤2作为从表 left join 条件为产品ID相等时候

SELECT a.城市,a.商品分类一级,a.商品分类二级,a.商品分类三级,a.产品ID,a.产品名称,a.在线天数,b.销售天数,b.订单额,
a.1日,a.2日,a.3日,a.4日,a.5日,a.6日,a.7日,a.8日,a.9日,a.10日,a.11日,a.12日,a.13日,a.14日,a.15日,a.16日,a.17日,a.18日,a.19日,a.20日,a.21日,a.22日,a.23日,a.24日,a.25日,a.26日,a.27日,a.28日,b.1日,b.2日,b.3日,b.4日,b.5日,b.6日,b.7日,b.8日,b.9日,b.10日,b.11日,b.12日,b.13日,b.14日,b.15日,b.16日,b.17日,b.18日,b.19日,b.20日,b.21日,b.22日,b.23日,b.24日,b.25日,b.26日,b.27日,b.28日
FROM (
SELECT 城市,a2.商品分类一级,a2.商品分类二级,a2.商品分类三级,a1.产品ID,a2.产品名称,COUNT(在线日期) AS 在线天数
,SUM(IF(在线日期='2016-11-01',1,NULL)) AS 1日,SUM(IF(在线日期='2016-11-02',1,NULL)) AS 2日,SUM(IF(在线日期='2016-11-03',1,NULL)) AS 3日,SUM(IF(在线日期='2016-11-04',1,NULL)) AS 4日
,SUM(IF(在线日期='2016-11-05',1,NULL)) AS 5日,SUM(IF(在线日期='2016-11-06',1,NULL)) AS 6日,SUM(IF(在线日期='2016-11-07',1,NULL)) AS 7日,SUM(IF(在线日期='2016-11-08',1,NULL)) AS 8日
,SUM(IF(在线日期='2016-11-09',1,NULL)) AS 9日,SUM(IF(在线日期='2016-11-10',1,NULL)) AS 10日,SUM(IF(在线日期='2016-11-11',1,NULL)) AS 11日,SUM(IF(在线日期='2016-11-12',1,NULL)) AS 12日
,SUM(IF(在线日期='2016-11-13',1,NULL)) AS 13日,SUM(IF(在线日期='2016-11-14',1,NULL)) AS 14日,SUM(IF(在线日期='2016-11-15',1,NULL)) AS 15日,SUM(IF(在线日期='2016-11-16',1,NULL)) AS 16日
,SUM(IF(在线日期='2016-11-17',1,NULL)) AS 17日,SUM(IF(在线日期='2016-11-18',1,NULL)) AS 18日,SUM(IF(在线日期='2016-11-19',1,NULL)) AS 19日,SUM(IF(在线日期='2016-11-20',1,NULL)) AS 20日
,SUM(IF(在线日期='2016-11-21',1,NULL)) AS 21日,SUM(IF(在线日期='2016-11-22',1,NULL)) AS 22日,SUM(IF(在线日期='2016-11-23',1,NULL)) AS 23日,SUM(IF(在线日期='2016-11-24',1,NULL)) AS 24日
,SUM(IF(在线日期='2016-11-25',1,NULL)) AS 25日,SUM(IF(在线日期='2016-11-26',1,NULL)) AS 26日,SUM(IF(在线日期='2016-11-27',1,NULL)) AS 27日,SUM(IF(在线日期='2016-11-28',1,NULL)) AS 28日
FROM (
SELECT 城市,产品ID,DATE(在线日期) AS 在线日期
FROM `a010_dynamic_产品` WHERE 城市='杭州' AND 在线日期>='2016-11-01' AND 在线日期<CURRENT_DATE
GROUP BY 产品ID,DATE(在线日期)
) AS a1
LEFT JOIN `a002_产品` AS a2 ON a1.产品ID=a2.产品ID
GROUP BY a1.产品ID
) AS a
LEFT JOIN (
SELECT 城市,产品ID,COUNT(订单日期) AS 销售天数,SUM(金额) AS 订单额
,SUM(IF(订单日期='2016-11-01',金额,NULL)) AS 1日,SUM(IF(订单日期='2016-11-02',金额,NULL)) AS 2日,SUM(IF(订单日期='2016-11-03',金额,NULL)) AS 3日,SUM(IF(订单日期='2016-11-04',金额,NULL)) AS 4日
,SUM(IF(订单日期='2016-11-05',金额,NULL)) AS 5日,SUM(IF(订单日期='2016-11-06',金额,NULL)) AS 6日,SUM(IF(订单日期='2016-11-07',金额,NULL)) AS 7日,SUM(IF(订单日期='2016-11-08',金额,NULL)) AS 8日
,SUM(IF(订单日期='2016-11-09',金额,NULL)) AS 9日,SUM(IF(订单日期='2016-11-10',金额,NULL)) AS 10日,SUM(IF(订单日期='2016-11-11',金额,NULL)) AS 11日,SUM(IF(订单日期='2016-11-12',金额,NULL)) AS 12日
,SUM(IF(订单日期='2016-11-13',金额,NULL)) AS 13日,SUM(IF(订单日期='2016-11-14',金额,NULL)) AS 14日,SUM(IF(订单日期='2016-11-15',金额,NULL)) AS 15日,SUM(IF(订单日期='2016-11-16',金额,NULL)) AS 16日
,SUM(IF(订单日期='2016-11-17',金额,NULL)) AS 17日,SUM(IF(订单日期='2016-11-18',金额,NULL)) AS 18日,SUM(IF(订单日期='2016-11-19',金额,NULL)) AS 19日,SUM(IF(订单日期='2016-11-20',金额,NULL)) AS 20日
,SUM(IF(订单日期='2016-11-21',金额,NULL)) AS 21日,SUM(IF(订单日期='2016-11-22',金额,NULL)) AS 22日,SUM(IF(订单日期='2016-11-23',金额,NULL)) AS 23日,SUM(IF(订单日期='2016-11-24',金额,NULL)) AS 24日
,SUM(IF(订单日期='2016-11-25',金额,NULL)) AS 25日,SUM(IF(订单日期='2016-11-26',金额,NULL)) AS 26日,SUM(IF(订单日期='2016-11-27',金额,NULL)) AS 27日,SUM(IF(订单日期='2016-11-28',金额,NULL)) AS 28日
FROM (#明细 每天每个产品订单额
SELECT 城市,DATE(订单日期) AS 订单日期,产品ID,产品名称,SUM(金额) AS 金额
FROM `a003_order`
WHERE 城市='杭州' AND 金额>0 AND 订单日期>='2016-11-01' AND 订单日期<CURRENT_DATE
GROUP BY 产品ID,DATE(订单日期)
) AS b1
GROUP BY 产品ID
) AS b ON a.产品ID=b.产品ID
ORDER BY a.商品分类一级,a.商品分类二级,a.商品分类三级,a.在线天数 DESC,b.销售天数 DESC,b.订单额 DESC