热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

select统计数量_SQL应用实战|销售数据统计指标

文末扫码领取资料【某招聘网站数据表】本篇文章主要是通过两家超市真实的数据来展示SQL在实战中如何应用,感兴趣的小伙伴可以扫码领取学习资料进行实操练习。业务背景介绍项目
e7cec8a0a0614b69aa6aeec02e6262b0.gif

文末扫码领取资料

【某招聘网站数据表】

本篇文章主要是通过两家超市真实的数据来展示SQL在实战中如何应用,感兴趣的小伙伴可以扫码领取学习资料进行实操练习。

业务背景介绍

项目的实战背景是二家超市的真实数据,数据时间段是从 20160101 到 20171231。

主要表字段说明:

bddfac232e1b7f51468be99ad728587a.png

超市的主要商业场景:

1. 进来的商品销售给顾客,要让进来的商品顾客愿意购买。所以对于顾客不愿意购买的商品要及时进行淘汰、下架,或者退还供应商和打折销售掉。如果卖不掉,超市是不是就把进货成本都亏损了,例如:进了 20 件坚果,如果进货 20 元,都卖不掉也退不了货那超市就白白损失了:400 元!

2. 所有超市的经营者,定期都需要通过数行监控,不断看每天哪些商品有在卖?哪些商品没有在卖?在每个月的时候,一定会复盘,在过去一个月里面有多少商品有产生过销售,每件有哪几天在产生销售。

思考以下问题

  • 如果过去一个月,某些商品没有一天产生销售,或者就是一二天产生销售,如果你是超市的经营者,你会怎么做呢?

  • 动销率可以用来衡量什么?
  • 目标:理解简单的数据统计指标背后的商业应用背景及商业逻辑,思考数据是如何指导运营的。

需 求

销售数据统计指标:统计 2017 年 8 月,有多少商品销售的天数超过 1 天,2 天,3 天,……31 天的,查看商品的动销情况。

说明:

  • 商品:即SKU,可以理解为一件商品,也就是我们表中的 GoodsID,暂时不考虑购买量以及购买金额。
  • 销售的天数是指:某天这个商品在这天产生过订单
  • 销率=有销售的 SKU 数/在销售的 SKU 数;例如:8 月 1 号,有过销售记录的 SKU 有 100 件,整个超市地 200 件商品在货架上可以卖,则这天的动销率为50%。

逻辑分析

  • 时间范围:2017 年 8 月份,说明需要日期字段,时间粒度是为:天。
  • 统计商品销售,那就涉及:商品编辑,商品的销售产生的订单

  • 首先,统计每个商品在这个月里面有多少天产生了被购买过的记录数。

  • 然后,再基于查询的结果:再按日期来数据统计,只产生过 1 天,2 天,。。。31 天销售记录商品数分别多少。

代码实现过程

SELECT sale_days ,COUNT(DISTINCT GoodsID) AS goods_qty # 统计不同天数有销售商品数量FROM(SELECT GoodsID ,COUNT(DISTINCT SDate) AS sale_days #统计每种商品各有多少在有销售 FROM OrderItem WHERE SDate BETWEEN '20170801' AND '20170831' GROUP BY GoodsID ORDER BY sale_days) AS tGROUP BY sale_daysORDER BY sale_days DESC;01723d0c1b0d97334cde99e3bd2d5a1b.png7264765df3c694bff7873734268f39f8.png

假设,我们想看下201708每天的动销率该如何查看呢?

逻辑分析:

  • 所有商品,也就是GoodsID在Goods表中

  • 总的在售商品数需要反复使用,所以使用定义变量

  • 在OrderItem表按照日期分组统计不同商品数量,得到每日有销售记录的商品数量

  • 汇总数据得到显示样式为:日期——有销售商品数量——动销率。

SELECT SDate ,sale_quantity AS 有销售的数量 ,CONCAT(ROUND(sale_quantity/@total_quantity * 100,2),"%") AS '动销率'FROM(SELECT SDate ,COUNT(DISTINCT GoodsID) AS sale_quantity FROM OrderItem WHERE SDate BETWEEN '20170801' AND '20170831' GROUP BY SDate) AS t1JOIN (SELECT @total_quantity := (SELECT COUNT(DISTINCT GoodsID) FROM Goods)) AS t2;1377fe48c634519d1814667bb507b382.png

201708每日动销率

后续其实可以做个折线趋势图,看下当月不同日期动销率的变化情况,如果有业务需要的话。这里主要是SQL的运用,不做过多分析。

End.

作者:对三选手

来源:简书

扫描海报上二维码添加客服

领取【某招聘网站数据表】

零基础入职数据分析就业班

课程的形式主要是“直播+录播”

报名专享:课程项目作业+1v1班主任监督学习+爱数据学院学员专属网站+班级答疑群

课程结束后能熟练掌握SQL、Python、Excel、PPT等工具

适合人群:

1.转行(岗位相关,专业相关、对数据分析感兴趣)

2.从事数据分析工作,但是需要提升技能以及增加实战经验

3.应届毕业生入职数据分析



推荐阅读
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在SQL中查询分组后每组行数的统计方法。通过使用count()函数和GROUP BY子句可以统计每组的行数,但是如何统计所有组的行数呢?本文提供了一种实现方法,并给出了相应的SQL查询语句。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • Excel中超好用的5招条件格式图表可视化 ... [详细]
author-avatar
lc蓝晨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有