当前位置: 首页 > news >正文

复杂SQL解析

文章目录

      • 背景表
      • SQL关键字
      • 分析
      • 具体Sql
      • 注意点
      • 补充:select的字段,也可以带有计算逻辑

背景表

1、sale_log as result: 主表,大部分字段都是取自这个表

2、sale_num as sale:需要从这个表获取真实销量sale_num字段

3、schedule as snap: 需要从这个表获取最终售最大售卖量total_stock字段

SQL关键字

  • Case When Then End
( Case 1 When 1 Then '提高销售量' END) as `降低|带来多货|提高销量`;
  • 运算
(sale.sale_num - result.origin_max_sale) as `降低|带来多货|提高销量PCS`;
(sale.sale_num - result.origin_max_sale) * result.sku_price as `销售额提高`;

分析

在这里插入图片描述

1、result表 left join sale 表,并按照 where条件形成场景1-降多货

  • 其中left join中的on内容是result和sale二者中一一对应的关系字段
  • where条件即降多货的条件

2、result 表 left join sale 表,并按照 where条件形成场景2-提升售卖量即提升GMV

3、场景1 UNION ALL场景2,组成临时表t

4、result表left join snap表,组成临时表m

5、表t INNER JOIN 表m,组成最终的Sql语句,即

selectt.主要字段,t.真实销量, m.最终最大售卖量
from t
inner joinm
ont和m一一对应关系
wherexxx

具体Sql

select distinctt.`商品SKUID`,t.`网店ID`,t.`网店名称`,t.`销售日期`,t.`角色`,t.`修改前数值`,t.`修改后数值`,t.`真实销量`,m.total_stock as `实际修改量`,t.`OR值`,t.`降低|带来多货|提高销量`,t.`降低|带来多货|提高销量PCS`,t.`销售价`
from((selectresult.sku_id as `商品SKUID`,result.poi_id as `网店ID`,sale.poi_name as `网店名称`,result.sale_date as `销售日期`,(CASE result.role WHEN 1 THEN '商家'  WHEN 2 THEN '普通用户' END) as `角色`,result.origin_max_sale as `修改前数值`,result.update_max_sale as `修改后数值`,sale.sale_num as `真实销量`,result.or_qty as `OR值`,(CASE 1 WHEN 1 THEN '降低多货'  END) as `降低|带来多货|提高销量`,(result.update_max_sale - result.origin_max_sale) as `降低|带来多货|提高销量PCS`,result.sku_price as `销售价`fromsale_log as resultLeft joinsale_num as saleonresult.sku_id = sale.sku_idand result.poi_id = sale.poi_idand replace(result.sale_date,'_','') = sale.sale_datewhereresult.sale_date between '$$begindate' and '$$enddate'and result.update_status = 1and result.update_type = 1and sale.sale_num < result.update_max_saleOrder byresult.operate_timeDescLimit5000000)Union All(selectresult.sku_id as `商品SKUID`,result.poi_id as `网店ID`,sale.poi_name as `网店名称`,result.sale_date as `销售日期`,(CASE result.role WHEN 1 THEN '商家'  WHEN 2 THEN '普通用户' END) as `角色`,result.origin_max_sale as `修改前数值`,result.update_max_sale as `修改后数值`,sale.sale_num as `真实销量`,result.or_qty as `OR值`,(CASE 1 WHEN 1 THEN '提高销量'  END) as `降低|带来多货|提高销量`,(result.update_max_sale - result.origin_max_sale) as `降低|带来多货|提高销量PCS`,result.sku_price as `销售价`fromsale_log as resultLeft joinsale_num as saleonresult.sku_id = sale.sku_idand result.poi_id = sale.poi_idand replace(result.sale_date,'_','') = sale.sale_datewhereresult.sale_date between '$$begindate' and '$$enddate'and result.update_status = 0and result.update_type = 2and sale.sale_num <= result.origin_max_saleOrder byresult.operate_timeDescLimit5000000)
) as t
Inner join(selectsnap.total_stock as total_stock, snap.base_sku_id as base_sku_id, snap.poi_id as 	  poi_id,snap.schedule_date as schedule_datefromsale_log as resultLeft joinschedule as snaponresult.sku_id = snap.base_sku_idand result.poi_id = sanp.poi_idand result.sale_date = snap.schedule_dateand snap.dt = replace(snap.schedule_date,'-','')whereresult.sale_date between '$$begindate' and '$$enddate' 
) as mOnt.`商品SKUID` = m.base_sku_idand t.`网店ID` = m.poi_idand t.`销售日期` = m.schedule_date
wheret.`网店ID` in($poiId)

注意点

  • 注意‘’引号 和 ``的区别

补充:select的字段,也可以带有计算逻辑

select e.name, e.age, e.salaty_of_month * 12 as `年薪`
fromemployee e
wherexxx;
http://www.lryc.cn/news/176692.html

相关文章:

  • js中哪些地方会用到window?
  • KITTI raw_data数据集百度云下载
  • (3) OpenCV图像处理kNN近邻算法
  • 手撸RPC【gw-rpc】
  • 【Linux】:Kafka组件介绍
  • Redis〔篇〕
  • 龙芯2K1000核心板在智能座舱行业产品方案-迅为电子
  • 2023/9/20 -- C++/QT
  • WordPress主题DUX v8.2源码下载
  • c++图像的边缘检测
  • C++ Primer 类和对象(3)
  • IntelliJ IDEA 介绍、安装、配置优化与快捷键大全
  • css 语法笔记
  • 【初阶数据结构】二叉树全面知识总结
  • CMD命令终端快捷键学习
  • Leetcode198. 打家劫舍
  • 前端技术社区总目录
  • 极客时间:左耳听风【文章笔记 思考总结】
  • 《论文阅读27》SuperGlue: Learning Feature Matching with Graph Neural Networks
  • 远程计算机或设备不接受连接解决方法
  • 基于Python实现的快递管理系统源码+数据库,采用PyQt6实现GUI界面
  • 如何使用docker快速部署MinDoc文档系统
  • 9月25日,每日信息差
  • 【网络协议】Https
  • Lostash同步Mysql数据到Elasticsearch(三)Elasticsearch模板与索引设置
  • python——ptp()函数
  • SpringBoot之异常处理
  • Flask-[实现websocket]-(2): flask-socketio文档学习
  • 网页中使用的图片格式
  • 【android】如何设置LD_LIBRARY_PATH?