需求1:对数据进行清洗,删除订单号为null和支付金额小于15的订单。 需求2:统计各种状态的数量和占比
需求3:对支付成功的订单进行描述分析性分析

  • 3.1:优惠类型数量及占比
  • 3.2:不同油品的加油量及占比
  • 3.3:不同油枪月加油车辆数
  • 3.4: 开票行为分析
  • 3.5:开票数量排前10的公司或者个人名及开票数量,消费金额,加油量
  • 3.6:按实付金额排名取前5名,查看用户id和总加油量,加油次数,
  • 3.7:按支付次数排名取前10名,查看用户id和总加油量,加油次数,平均每次消费金额 需求4:查看11月每日的订单数,订单总额 需求5:按周统计总订单数、金额、平均客单价(eg:11.04-11.10) 需求6:求周权重指数 并排序。
    (周权重指数=(周日到周六)日权重指数之和 日权重指数=日订单数/最低日订单数) 需求7:不同油品每日加油量统计

思维部分

代码实现部分

需求1:对数据进行清洗,删除订单号为null和支付金额小于15的订单。

ALTER TABLE `某油站订单流水`   RENAME TO satation_datas;

需求2:统计各种状态的数量和占比

修改表名
ALTER TABLE `某油站订单流水`   RENAME TO satation_datas;删除(删除之前需要做好备份)
DELETE FROM  satation_datas
WHERE `订单号` is null or ` 实付金额`<15;

需求3:对支付成功的订单进行描述分析性分析

  • 3.1:优惠类型数量及占比
 SELECT`优惠类型`,count(`优惠类型` ) AS num,count( `优惠类型`) / ( SELECT count( DISTINCT `订单号` ) FROM satation_datas WHERE  `状态`='成功') AS rate
FROM satation_datas
WHERE  `状态`='成功'
GROUP BY`优惠类型`
ORDER BY num desc;

  • 3.2:不同支付入口的数量及占比
 SELECT`支付入口`,count(`支付入口` ) AS num,count( `支付入口`) / ( SELECT count( DISTINCT `订单号` ) FROM satation_datas WHERE  `状态`='成功') AS rate
FROM satation_datas
WHERE  `状态`='成功'
GROUP BY`支付入口`
ORDER BY num desc;

  • 3.3:不同油品的加油量及占总加油比
 SELECT`油品`,sum(`油量`) AS Fuel,ROUND(sum(`油量`)/(SELECT sum(`油量`) FROM satation_datas WHERE  `状态`='成功'),2) AS rate
FROM satation_datas
WHERE  `状态`='成功'
GROUP BY
`油品`
ORDER BY rate desc;

  • 3.4:不同油枪月加油车辆数
 SELECT`油枪`,count(`订单号`) as car_numFROM satation_datas
WHERE  `状态`='成功'
GROUP BY`油枪`
ORDER BY car_num desc;

  • 3.5: 开票行为分析
SELECT
CASE`发票名称` WHEN `发票名称` IS NULL THEN0 ELSE 1 END '是否开票',count( `订单号` ) AS num,count( `订单号` ) / ( SELECT count( DISTINCT `订单号` ) FROM satation_datas WHERE `状态` = '成功' ) AS rate
FROMsatation_datas
WHERE`状态` = '成功'
GROUP BY
CASE`发票名称` WHEN `发票名称` IS NULL THEN0 ELSE 1 END;

  • 3.6:开票数量排前10的公司或者个人名及开票数量,消费金额,加油量
 SELECT`发票名称`,count(`订单号`) as '开票数量',sum(` 实付金额`) as '消费金额',sum(`油量`) as '加油量'from satation_datasWHERE `状态` = '成功' and `发票名称`  IS not NULL
GROUP BY
`发票名称`
ORDER BY count(`订单号`) desc
LIMIT 10;

  • 3.7:按实付金额排名取前5名,查看用户id和总加油量,加油次数,
  SELECT`主用户标识Openid`,sum(` 实付金额`) as '消费金额',sum(`油量`) as '总加油量',count(`订单号`) as '加油次数',ROUND(sum(`油量`)/count(`订单号`),2) as '均加油量'from satation_datasWHERE `状态` = '成功'
GROUP BY
1
ORDER BY sum(` 实付金额`) desc
LIMIT 5;

  • 3.8:按支付次数排名取前10名,查看用户id和总加油量,加油次数,平均每次消费金额
   SELECT`主用户标识Openid`,count(` 实付金额`) as '支付次数',sum(` 实付金额`) as '消费金额',sum(`油量`) as '总加油量',ROUND(sum(` 实付金额`)/count(`订单号`),2) as '均消费金额'from satation_datasWHERE `状态` = '成功'
GROUP BY
1
ORDER BY count(` 实付金额`) desc
LIMIT 10;


需求4:查看11月每日的订单数,订单总额

 思路:5位excel格式日期转为日期 ,参考:https://bbs.csdn.net/topics/392559907 然后按日期分组
SELECTDATE_SUB( DATE_FORMAT( '1899-12-30', '%Y-%m-%d' ), INTERVAL - `打印完成` DAY ) AS date,count( `订单号` ) AS '订单数',sum( ` 实付金额` ) AS '订单总额',ROUND(sum( `油量` ),2) AS '总加油量',ROUND( sum( ` 实付金额` ) / count( `订单号` ), 2 ) AS '均消费金额'
FROMsatation_datas
WHERE`状态` = '成功'
GROUP BY1;


需求5:按周统计总订单数、金额、平均客单价(eg:11.04-11.10)

在这里插入代码片

 mysql 取当前日期对应的周一或周日select subdate(curdate(),date_format(curdate(),'%w')-1)//获取当前日期在本周的周一 select subdate(curdate(),date_format(curdate(),'%w')-2)//获取当前日期在本周的周二 select subdate(curdate(),date_format(curdate(),'%w')-7)//获取当前日期在本周的周日 %W     星期名字(Sunday……Saturday)
%w     一个星期中的天数(0=Sunday   ……6=Saturday)
date_sub ()减去间隔
date_add()加上间隔
获取日期所在周的周一
SELECT  DATE_SUB('2015/1/29',INTERVAL WEEKDAY('2015/1/29') DAY);
获取日期所在周的周日
SELECT  DATE_ADD('2019/11/03',INTERVAL 6-WEEKDAY('2019/11/03') DAY);
获取日期所在周前一周的周日
SELECT DATE_SUB('2015/2/5', INTERVAL WEEKDAY('2015/2/5')+1 DAY);SELECT  DATE_SUB('2019/11/01',INTERVAL WEEKDAY('2019/11/01') DAY);
创建中间视图,方便查询所在周
drop  view  date_v;
CREATE VIEW date_v as
SELECTd.data_date,DATE_SUB( d.data_date, INTERVAL WEEKDAY( d.data_date ) DAY ) AS week_start,DATE_add( d.data_date, INTERVAL 6-WEEKDAY( d.data_date ) DAY ) AS week_end,CONCAT(DATE_SUB( d.data_date, INTERVAL WEEKDAY( d.data_date ) DAY ),"~",DATE_ADD( d.data_date, INTERVAL 6-WEEKDAY( d.data_date ) DAY ) ) AS week_info
FROM( SELECT DISTINCT DATE_SUB( DATE_FORMAT( '1899-12-30', '%Y-%m-%d' ), INTERVAL - `打印完成` DAY ) AS data_date FROM satation_datas WHERE `状态` = '成功' ) d
#验证一下
SELECT * from date_v;连接查询
SELECT  v.week_info,count( `订单号` ) AS '订单数',sum( ` 实付金额` ) AS '订单总额',ROUND(sum( `油量` ),2) AS '总加油量',ROUND( sum( ` 实付金额` ) / count( `订单号` ), 2 ) AS '均消费金额'
from
(SELECT `订单号`,DATE_SUB( DATE_FORMAT( '1899-12-30', '%Y-%m-%d' ), INTERVAL - `打印完成` DAY ) AS data_date,
` 实付金额` ,
`油量`
from satation_datas WHERE `状态`= '成功' GROUP BY 1)a
left join date_v v on a.data_date=v.data_date
GROUP BY 1;


需求6:求周权重指数 并排序。

周权重指数=(周日到周六)日权重指数之和

日权重指数=日订单数/最低日订单数

来自《数据化管理》
周权重指数概念相关
周权重是以某段销售周期内的历史日销售额数据为基础,以周为单位,进行权重分析处理的一种管理工具。
周权重指数是一个相对概念,每个企业都不尽相同,一般介于7.0一14.0之间。
值越大表示该企业或者店铺的日销售额波动幅度越大。周权重指数是零售店铺用来犀化处理各种销售状况、销售事件的管理工具,非常强大。
周权重指数=周一到周日每天的日权重指数相加
假如某个零售店铺的周权重指数为10.0,其中周一到周日依次为1.0,1.2,1.3,1.2,1.6,1.9,1.80可以这样简单地理解周权重指数和日权重指数,如果这个店铺每周销售額为10元,那一般来说周一可以销售1.0元,周二可以销售1.2元…权重指数是一个相对值。
为了标准化管理,每个零售企业应该是统一的周权重指数。
可应用行业或业态
总的来说以普通消费者为销售或服务对象的业态都会具有这种规律,只不过零售行业表现得相对更明显一些。
大体上来说权重指数概念适用于如下这些行业或业态:

  1. 传统零售业,包括百货商场、ShoppingMall,超市、便利店等,同时这些零售业态中销售的品牌也同样具有这种特性。
  2. 各种专卖店,包括如服装专卖店、电器专卖店、手机专卖店、建材专卖店、药店等。
  3. 以普通消费者为对象的电子商务模式,包括B2C、C2C等。
  4. 售卖服务的业态,比如火车站、汽车站、手机营运商的营业万、电影院、饭店、旅游景点等 等,甚至你们家附近的理发店、彩票店都适用。

以下为个人总结:
这道需求主要用于简单了解周权重数,数据量方面还是有点小,主要关注以下实现步骤吧。

SELECT weekday,
avg_amount,
(SELECT min(avg_amount) from week_v) as min,
#--取出最小值
ROUND(avg_amount/(SELECT min(avg_amount) from week_v),2) as num
#--用每日值除以最小值 得到每日权重
from week_v
ORDER BY num desc
;


需求7:不同油品每日加油量统计

--求出每日加油量
SELECT
`油品`,
DATE_SUB( DATE_FORMAT( '1899-12-30', '%Y-%m-%d' ), INTERVAL - `打印完成` DAY ) AS data_date,
sum( ` 实付金额` ) AS amount
FROMsatation_datas
WHERE`状态` = '成功'
GROUP BY1,2;实现行转换列
SELECT data_date,
SUM(IF (`油品`='0# 柴油',amount,NULL)) '0# 柴油',
SUM(IF (`油品`='92#汽油',amount,NULL)) '92#汽油',
SUM(IF (`油品`='95#汽油',amount,NULL)) '95#汽油',
SUM(IF (`油品`='98#汽油',amount,NULL)) '98#汽油',
amount as total
FROM
(SELECT
`油品`,
DATE_SUB( DATE_FORMAT( '1899-12-30', '%Y-%m-%d' ), INTERVAL - `打印完成` DAY ) AS data_date,
sum( ` 实付金额` ) AS amount
FROMsatation_datas
WHERE`状态` = '成功'
GROUP BY1,2
)a
GROUP BY data_date;

数据分析项目-某加油站订单分析(SQL需求篇)相关推荐

  1. python数据分析项目之超市零售分析

    文章目录 一.明确需求和目的 二.数据收集 三.数据清洗 1.列名重命名 2.数据类型处理 3.缺失值处理 4.异常值处理 5.重复值处理 四.数据分析 1.整体销售情况分析 2.商品情况分析 3.用 ...

  2. 7.Python数据分析项目之银行客户流失分析

    1.总结 预测类数据分析项目 流程 具体操作 基本查看 查看缺失值(可以用直接查看方式isnull.图像查看方式查看缺失值missingno).查看数值类型特征与非数值类型特征.一次性绘制所有特征的分 ...

  3. 挨踢项目求生法则(3)——需求篇

    摘要: 知道什么是挨踢项目吧?什么!不知道?那IT项目知道了吧?为了不让客户踢.不让老板踢.项目组成员之间不互相踢,俺为大家分享一些减少被踢机会的心得体会.就算不能让项目成功,也至少不会死得那么惨吧! ...

  4. 大数据分析项目实战--天猫订单综合分析

    天猫订单综合分析 分析订单转化率.销量趋势.地域分布统计等. 文章目录 天猫订单综合分析 一.数据背景 二.分析目的 三.读取数据 导入相关包 读取并查看数据 四.处理数据 规范字段名称 重复值与缺失 ...

  5. 数据分析项目——深圳二手房价分析及价格预测

    目录 一.需求说明 1.1基本任务 1.2 任务目的 1.3测试数据 二.概要设计说明 三.详细设计 3.1 数据检测模块 3.2 因变量分析模块 3.3 自变量分析模块 3.4 可视化模块 3.5  ...

  6. python药店销售数据分析_药房销售情况分析(python篇)

    运用python中的numpy.pandas等包,可以帮助我们很方便的进行数据统计.数据分析.今天,通过朝阳医院2018的销售数据这个案例来简单做一下展示. 数据分析的基本过程一般分为以下几个部分: ...

  7. 数据分析项目实战项目一:CPC广告优化以及bilibili订单分析(下)

    第一章:电商平台数据分析思路与bilibili会员购介绍 1.1互联网电商平台数据分析的一般思路 互联网电商平台数据分析的一般思路一般分为以下三步:找出问题,分析问题,解决问题.其中,找出问题包括描述 ...

  8. 数据分析项目:母婴商品销量分析

    本篇文章转载自数据分析4_母婴商品销量分析,本人是对其数据分析进行复现,当做数据分析的练习项目,并对复现项目时遇到的一些问题进行说明. 项目介绍 项目背景 根据PEST框架,从四个角度简要分析: 政策 ...

  9. 高性能计算系统——大数据与快速数据分析对高性能分析的需求

    大数据与快速数据分析对高性能分析的需求 智能家居的设备的产生必然使下一代家居服务概念化,社交网站和知识社区的日益普及,科学实验和技术计算的激增,高度可编程以及软件定义IT基础设施(服务器.存储装置.网 ...

最新文章

  1. 程序员面试题精选100题(35)-两链表的第一个公共结点[数据结构]
  2. Java与汽车_Java NIO:IO与NIO的区别
  3. eclipse+android source code
  4. Git 企业开发者教程
  5. 群辉挂载linux nfs,Debian 9 挂载访问已设置的群晖NFS共享文件目录
  6. STM32分散加载文件
  7. 11个实用jQuery日历插件
  8. 1295. 统计位数为偶数的数字(to_string 将整型数字变为字符串)
  9. 高仿阴阳师官网轮播图效果的jQuery插件
  10. PageRequestManager
  11. Mysql设置某字段唯一
  12. USB Host读取U盘成功
  13. Spring AOP之概念解释
  14. 一元线性回归(最小二乘法)
  15. 电子元器件之电容-2
  16. tas5424_TAS5424ATDKDQ1
  17. 手机壁纸尺寸android,APP设计手抄:5点安卓手机尺寸分辨率知识
  18. Hugo博客搭建配置
  19. 小故事大道理:送你四个生活启示
  20. python地图 两点距离_使用python计算google地图中两点之间的距离

热门文章

  1. 昆明机场至南亚东南亚国家通航点达34个 居全国首位
  2. 企业微信公告可以发布图片吗?
  3. G2 定制仪表盘实践
  4. MongoDB数据库常用SQL命令
  5. mysql 查询当月当天数据量
  6. 征信 - 信用的价值
  7. DB2 HADR TSA安装
  8. JetBrains 下一代 IDE 工具 Fleet 正式公测!
  9. 上课记录笔记 项目1 文字大乱斗 v0.1
  10. JAVA 完整实现滑块拼图验证码