数据库:zhcxkj_center_order
查询时间:21.5635
执行次数: 37
扫描行数:152491
发送行数:1
指纹SQL: with tmp_monitor_sale as ( select ? msku , ? source_id ) SELECT sale . msku , sale . source_id , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? DAY ) , ? ) AS UNSIGNED ) ) THEN quantity_ordered ELSE ? END ) ? , sum ( CASE WHEN ( purchase_date_day >= cast ( DATE_FORMAT ( DATE_ADD ( CURDATE ( ) , INTERVAL - ? - ? DAY ) , ? ) AS UNSIGNED ) AND purchase_date_day <= cast ( DATE_FORMAT ( DATE_ADD ( CURD
真实SQL:with tmp_monitor_sale as ( select 2157458-6605-1014076531 msku, 6605 source_id ) SELECT sale.msku, sale.source_id, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 6 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum7, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 13 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum14, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 27 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum28, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 30 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum30, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 59 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum60, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 89 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum90, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 119 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum120, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 179 - 2 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) saleNum180, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 6 - 2 - 364 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 - 364 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) yoySaleNum7, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 13 - 2 - 364 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 - 364 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) yoySaleNum14, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 29 - 2 - 364 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 - 364 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) yoySaleNum30, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 59 - 2 - 364 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 - 364 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) yoySaleNum60, sum( CASE WHEN ( purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 89 - 2 - 364 DAY ), %Y%m%d ) AS UNSIGNED ) AND purchase_date_day <= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 2 - 364 DAY ),%Y%m%d ) AS UNSIGNED )) THEN quantity_ordered ELSE 0 END ) yoySaleNum90 FROM t_amazon_sales_6 sale inner join tmp_monitor_sale tmp on sale.source_id = tmp.source_id and sale.msku = tmp.msku where sale.purchase_date_day >= cast( DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL - 364 - 2 - 365 DAY ), %Y%m%d ) AS UNSIGNED ) AND sale.order_status IN ( 1, 2, 3, 4 ) GROUP BY msku, source_id;
袁慧斌,人工修改过
AISQL修改建议:WITH tmp_monitor_sale AS (
SELECT 2157458-6605-1014076531 AS msku, 6605 AS source_id
)
SELECT
sale.msku,
sale.source_id,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 8 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum7,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 15 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum14,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 29 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum28,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 32 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum30,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 61 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum60,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 91 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum90,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 121 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum120,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 181 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 2 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS saleNum180,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 372 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 366 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS yoySaleNum7,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 379 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 366 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS yoySaleNum14,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 395 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 366 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS yoySaleNum30,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 425 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 366 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS yoySaleNum60,
SUM(CASE WHEN purchase_date_day BETWEEN DATE_FORMAT(CURDATE() - INTERVAL 455 DAY, %Y%m%d) AND DATE_FORMAT(CURDATE() - INTERVAL 366 DAY, %Y%m%d) THEN quantity_ordered ELSE 0 END) AS yoySaleNum90
FROM t_amazon_sales_6 sale
INNER JOIN tmp_monitor_sale tmp ON sale.source_id = tmp.source_id AND sale.msku = tmp.msku
WHERE sale.purchase_date_day >= DATE_FORMAT(CURDATE() - INTERVAL 731 DAY, %Y%m%d)
AND sale.order_status IN (1, 2, 3, 4)
GROUP BY sale.msku, sale.source_id;
explain表:
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | PRIMARY | <derived2> | None | system | None | None | None | None | 1 | 100.0 | None |
| 1 | PRIMARY | sale | None | ref | idx_source_id_msku,idx_purchase_date_day,idx_source_id_purchase_date_beijing_msku,idx_source_id_country_code_purchase_date_asin | idx_source_id_msku | 518 | const,const | 396434 | 20.0 | Using index condition; Using where |
| 2 | DERIVED | None | None | None | None | None | None | None | None | None | No tables used |
额外建议:排查是否缺少索引
索引建议:join查询分析出错: (1146, "Table zhcxkj_center_order.tmp doesnt exist")join查询分析出错: (1146, "Table zhcxkj_center_order.tmp doesnt exist")
取出表 【t_amazon_sales_6】 where条件表达式 【order_status IN (1, 2, 3, 4)】 100000 条记录,重复的数据有:【98240】 条,没有必要为该字段创建索引。
→ 【t_amazon_sales_6】表 【purchase_date_day】字段,索引已经存在,无需添加任何索引。
【t_amazon_sales_6】表 【purchase_date_day】字段,索引分析:
+------------------+-----------------------+-------------------+---------------+
| TABLE_NAME | INDEX_NAME | COLUMN_NAME | CARDINALITY |
+==================+=======================+===================+===============+
| t_amazon_sales_6 | idx_purchase_date_day | purchase_date_day | 41778 |
+------------------+-----------------------+-------------------+---------------+
