SQL应用·:用SQL分析供应商营业额
实战案例:
重点掌握如何细化分析目标以及如何拆解案例的问题
学习目标:
掌握复杂问题逐步拆解的思维和能力,让解题思路有迹可循
模拟真实工作案例,让数据分析真正落地、有效
分析目的:
- 了解合作的供应商产品的销售情况
- 提高采购效率,增进与大供应商的合作关系
- 增加公司销售额与利润
分析指标:
- 供应商的商品总营业额
- 总销售额越高,供应商的规模越大
问题驱动:找出总销售额最高的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分析供应商营业额相关推荐
- SQL语句优化技术分析
SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用 ...
- thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...
- 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...
- MySQL慢查询之慢SQL定位、日志分析与优化方案
一个sql执行很慢的就叫慢sql,一般来说sql语句执行超过5s就能够算是慢sql,需要进行优化了 为何要对慢SQL进行治理 每一个SQL都需要消耗一定的I/O资源,SQL执行的快慢直接决定了资源被占 ...
- SQL Server 阻塞原因分析
这里通过连接在sysprocesses里字段值的组合来分析阻塞源头,可以把阻塞分为以下5种常见的类型(见表).waittype,open_tran,status,都是sysprocesses里的值,& ...
- /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...
显示不全请点击全屏阅读 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商 ...
- 数据库操作 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 ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- MySQL高性能实战——part3——分析SQL,定位慢SQL(性能优化的前提)
前言: 此文借鉴<MySQL高性能>一书,还有MySQL官方文档,笔者将通过自身的一些实战经验和阅读习惯对本书进行一个总结,整理,归纳出企业级开发中常用的优化案列和部分概念!! 官方文 ...
- RedBase SQL解析源码分析
@原创文章,转载请注明: 转载自 镜中影的技术博客 本文链接地址: RedBase SQL解析源码分析) URL:http://blog.csdn.net/linkpark1904/article/d ...
最新文章
- 红旗linux桌面版反应慢,红旗Linux6.0桌面版使用感受
- JS基础篇--HTML DOM classList 属性
- mysql无级分销_3级分销(mysql存储过程写法)
- 入门写博客之markdown语法
- 数据中心日常维护工作有哪些?
- 凡事向内求,我心是一切,一切是我心,我是一切的根源,我永远都会成为潜意识中的我。...
- 【计算机算法设计与分析】——排序
- “睡服”面试官系列第十六篇之Symbol(建议收藏学习)
- CentOS下安装VirtualEnv的教程
- 4个空格和一个tab有什么区别_火花塞为什么一换就是4个?只换一个不行吗?
- sftp 设置仅能访问自己目录的用户
- iOS UIButton文字和图片间距随意调整
- poj 3211 Washing Clothes (01)
- Android 10正式版发布,支持5G和折叠屏设备
- 十、Shell脚本编程
- kmz转换为dwg_怎么将CAD图纸两种基本格式DWG与DXF进行互转?
- HRCAD2008 无法加载问题
- STM32CubeMonitor使用教程
- fiddler 手机 https 抓包
- 周期信号波形识别及参数测量装置(J 题) 【高职高专组】--2021 年全国大学生电子设计竞赛
热门文章
- 专升本英语——菜鸟学习笔记【知识点齐全-轻松学习】!!!
- 第十届蓝桥杯大赛个人赛省赛(软件类本科B组)做题笔记Partial
- 三星s8html查看器,拆解三星S8手机
- 网页形式的php抓取文件,PHP 抓取网页源文件
- 排序专题——8.基数排序之LSD法
- 为大家介绍两款私藏宝藏可视化大屏制作软件
- 基于Android的记事本APP设计与实现
- Robust regression(稳健回归)
- Day 4.Social Data Sentiment Analysis: Detection of Adolescent Depression Signals
- java初级中级高级区分_初级、中级、高级程序员之间的区别,最后的顶级程序员很秀...