实战案例:

重点掌握如何细化分析目标以及如何拆解案例的问题

学习目标:

掌握复杂问题逐步拆解的思维和能力,让解题思路有迹可循
模拟真实工作案例,让数据分析真正落地、有效

分析目的:

  • 了解合作的供应商产品的销售情况
  • 提高采购效率,增进与大供应商的合作关系
  • 增加公司销售额与利润

分析指标:

  • 供应商的商品总营业额
  • 总销售额越高,供应商的规模越大

问题驱动:找出总销售额最高的10个供应商信息

分析目标细化:

  • 最终返回结果:供应商信息
  • 过滤数据:供应商总销售额
  • 过滤条件:销售额最高的10个

案例拆解

  • 选取最终结果(SELECT)- 供应商信息
  • 过滤数据- 供应商总金额计算
    • 单个产品总销售额 = 产品订单记录的消费之和(GROUP BY / SUM)
    • 供应商销售额 = 供应商提供的总销售额之和(GROUP BY / SUM)
  • 过滤条件(ORDER BY / LIMIT)- 销售额最高的10个

数据定位:

  • 提供各个供应商详细信息的供应商信息表
  • 提供产品与供应商之间联系的产品信息表
  • 计算出各个产品总销售额的订单信息表

深刻理解每一个表以及表与表之间的业务关系内涵:

比如说,订单明细表表征的是每一个订单中,各类产品的销售记录明细,因此可以通过产品号码聚类,用来计算每样产品的总销售额。

明确一个逻辑:

每个供应商能够提供多个产品,或者说,不同产品可能来自同一个供应商;每一条订单记录可能包括多个订单明细记录;所以要得到过滤数据:供应商总销售额,先得分别得到每个产品的总销售额,然后得到每个供应商的总销售额。然后再做排序筛选,连接表操作,得到前10总销售额的供应商信息。

分析目标:列出总销售额最高的10个供应商。

详细解答步骤:

  • 计算每样产品的总销售额 —— `订单明细``表:GROUP BY / SUM
SELECT `产品号码`, SUM( `产品单价` * `购买数量` ) AS `产品销售额` FROM `订单明细` GROUP BY `产品号码`
  • 为每一个供应商计算历史总销售额,获得前10的供应商信息
SELECTa.`供应商号码`,SUM( `产品销售额` ) AS `供应商销售额`
FROM `产品信息` AS aINNER JOIN (SELECT `产品号码`, SUM( `产品单价` * `购买数量` ) AS `产品销售额` FROM `订单明细` GROUP BY `产品号码` ) AS b
ON a.`产品号码` = b.`产品号码`
GROUP BYa.`供应商号码`
ORDER BY`供应商销售额` DESC
  • 提供历史总销售额前10的供应商号码,公司、以及总销售额作为最终的分析结果。
# V2 优化版本SELECT
c.`供应商号码`,
d.`公司`,
c.`供应商销售额`
FROM `供应商信息` AS d
INNER JOIN
(SELECTa.`供应商号码`,SUM( `产品销售额` ) AS `供应商销售额` FROM `产品信息` AS aINNER JOIN(SELECT `产品号码`, SUM( `产品单价` * `购买数量` ) AS `产品销售额` FROM `订单明细` GROUP BY `产品号码` )
AS b
ON a.`产品号码` = b.`产品号码`
GROUP BY a.`供应商号码`
ORDER BY `供应商销售额` DESC
LIMIT 10
) AS c
ON c.`供应商号码` = d.`供应商号码`# 子查询只返回需要的字段;改变连接的逻辑顺序,代码变短;
# JOIN语句改成 LEFT JOIN

—— ——— —— ——— —— ——— ———— ———— ———— —— —— —— ——— ——— ——— ——— —————

SQL代码实现:

# V1 版本
SELECTd.`供应商号码`,e.`公司`,d.`供应商销售额`
FROM(
SELECT`供应商号码`,SUM( `产品销售额` ) AS `供应商销售额`
FROM(
SELECTa.`产品号码`,b.`供应商号码`,a.`产品销售额`
FROM( SELECT `产品号码`, SUM( `产品单价` * `购买数量` ) AS `产品销售额` FROM `订单明细` GROUP BY `产品号码` ) AS aLEFT JOIN `产品信息` AS b ON a.`产品号码` = b.`产品号码` ) AS c
GROUP BY `供应商号码`
ORDER BY `供应商销售额` DESC LIMIT 10 ) AS dLEFT JOIN `供应商信息` AS e ON d.`供应商号码` = e.`供应商号码`

分析结果可视化:

SQL应用·:用SQL分析供应商营业额相关推荐

  1. SQL语句优化技术分析

    SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用 ...

  2. thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...

  3. 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...

  4. MySQL慢查询之慢SQL定位、日志分析与优化方案

    一个sql执行很慢的就叫慢sql,一般来说sql语句执行超过5s就能够算是慢sql,需要进行优化了 为何要对慢SQL进行治理 每一个SQL都需要消耗一定的I/O资源,SQL执行的快慢直接决定了资源被占 ...

  5. SQL Server 阻塞原因分析

    这里通过连接在sysprocesses里字段值的组合来分析阻塞源头,可以把阻塞分为以下5种常见的类型(见表).waittype,open_tran,status,都是sysprocesses里的值,& ...

  6. /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...

    显示不全请点击全屏阅读 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商 ...

  7. 数据库操作 linq php,.NET_asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析,本文实例讲述了asp.net使用LINQ t - phpStudy...

    asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析 本文实例讲述了asp.net使用LINQ to SQL连接数据库及SQL操作语句用法.分享给大家供大家参考,具体如下: LI ...

  8. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  9. MySQL高性能实战——part3——分析SQL,定位慢SQL(性能优化的前提)

    前言: 此文借鉴<MySQL高性能>一书,还有MySQL官方文档,笔者将通过自身的一些实战经验和阅读习惯对本书进行一个总结,整理,归纳出企业级开发中常用的优化案列和部分概念!! ​ 官方文 ...

  10. RedBase SQL解析源码分析

    @原创文章,转载请注明: 转载自 镜中影的技术博客 本文链接地址: RedBase SQL解析源码分析) URL:http://blog.csdn.net/linkpark1904/article/d ...

最新文章

  1. 红旗linux桌面版反应慢,红旗Linux6.0桌面版使用感受
  2. JS基础篇--HTML DOM classList 属性
  3. mysql无级分销_3级分销(mysql存储过程写法)
  4. 入门写博客之markdown语法
  5. 数据中心日常维护工作有哪些?
  6. 凡事向内求,我心是一切,一切是我心,我是一切的根源,我永远都会成为潜意识中的我。...
  7. 【计算机算法设计与分析】——排序
  8. “睡服”面试官系列第十六篇之Symbol(建议收藏学习)
  9. CentOS下安装VirtualEnv的教程
  10. 4个空格和一个tab有什么区别_火花塞为什么一换就是4个?只换一个不行吗?
  11. sftp 设置仅能访问自己目录的用户
  12. iOS UIButton文字和图片间距随意调整
  13. poj 3211 Washing Clothes (01)
  14. Android 10正式版发布,支持5G和折叠屏设备
  15. 十、Shell脚本编程
  16. kmz转换为dwg_怎么将CAD图纸两种基本格式DWG与DXF进行互转?
  17. HRCAD2008 无法加载问题
  18. STM32CubeMonitor使用教程
  19. fiddler 手机 https 抓包
  20. 周期信号波形识别及参数测量装置(J 题) 【高职高专组】--2021 年全国大学生电子设计竞赛

热门文章

  1. 专升本英语——菜鸟学习笔记【知识点齐全-轻松学习】!!!
  2. 第十届蓝桥杯大赛个人赛省赛(软件类本科B组)做题笔记Partial
  3. 三星s8html查看器,拆解三星S8手机
  4. 网页形式的php抓取文件,PHP 抓取网页源文件
  5. 排序专题——8.基数排序之LSD法
  6. 为大家介绍两款私藏宝藏可视化大屏制作软件
  7. 基于Android的记事本APP设计与实现
  8. Robust regression(稳健回归)
  9. Day 4.Social Data Sentiment Analysis: Detection of Adolescent Depression Signals
  10. java初级中级高级区分_初级、中级、高级程序员之间的区别,最后的顶级程序员很秀...