Excel+SQL实战项目 - 餐饮业日销售情况分析仪

news2024/9/27 21:20:47

目录

    • 1、要完成的任务
    • 2、认识数据
    • 3、SQL数据加工
    • 4、excel形成分析仪

1、要完成的任务

目标:结合SQL和excel实现餐饮业日销售情况分析仪,如下表:
在这里插入图片描述
认识分析仪:
切片器:店面
分为四部分:KPI 、组合图、饼图、数据透视表
KPI指标:

  1. 当天销售情况
  2. 当天桌子使用情况
  3. 当天每把椅子的使用情况

在这里插入图片描述

组合图:每小时的销售额与销量变化趋势
饼图:不同菜品下的销售额占比情况,销量占比情况
数据透视表:不同菜品下的销售额情况,销量情况

2、认识数据

表结构信息:
在这里插入图片描述
bill表中缺失金额,order表缺失店名信息 —bill表与order表连接一下可以解决
在这里插入图片描述
反映不同店的桌子信息:
shop表要补充总座位表
在这里插入图片描述

3、SQL数据加工

  1. 用orderdetail表创建单汇总金额表(OrderGroup)–计算每单号的总金额
    以orderdetail表的billnumber单号字段为汇总依据,求出每条billnumber下pay的加总值。
    新表字段:billnumber(单号)、pay(金额)

  2. 用Bill表与OrderGroup表创建新单号详细表(NewBill)–newbill = bill+每单总金额+每单折扣后金额
    以billnumber为关键字段关联两表,将OrderGroup表中的pay字段合并到Bill表中,并使用pay与billdiscount字段计算出折扣金额。
    新表字段:所有Bill表中的字段、pay(金额)、rebate(折扣金额)
    计算逻辑:Rebate = pay * billdiscount

  3. 用Shopdetail表创建新店面情况表(NewShopDetail)–添加每家店的总座位数
    在原有shopdetail表字段基础上计算并添加allseats字段
    新表字段:所有ShopDetail表中的字段、allseats(总座位数)
    计算逻辑:allseats = twotable * 2 + three * 3 + fourtable * 6

  4. 用OrderDetail表与Bill表创建新点菜明细表(NewOrderDetail)–给order表增加店名信息
    以billnumber为关键字段关联两表,并用Bill表中的shopname与OrderDetail表中的所有字段组成新表
    新表字段:shopname(店名)、OrderDetail表中的所有字段

  5. 用NewBill表与NewShopDetail表创建店汇总信息表(ShopTotal)
    以shopname字段为关键字段关联两表,并以shopname字段为汇总条件,创建以下字段
    新表字段:
    店名: b.shopname
    单数: b.billnumber的计数
    人数: b.peoplecount的加总
    折扣总金额: b.rebate的加总
    店汇总金额: b.pay的加总
    单均消费: b.pay的合计值/b.billnumber的计数值
    人均消费: b.pay的合计值/b.peoplecount的合计值
    总台数: s.alltable
    总座位数: s.allseats
    翻台率: b.billnumber的计数值/s.alltable (总单数/总桌数)
    上座率: b.peoplecount的合计值/s.allseats
    折扣率: b.rebate的合计值/b.pay的合计值

导入bill表:

create database CateringCase;

use CateringCase;

--  Bill table
create table Bill(
	billdate date not null,
    billnumber varchar(20) not null default '-',
    shopname varchar(20) not null default '-',    
    billdiscount float not null default 0,
    paytime time not null,
    tablenumber int not null default 0,
    peoplecount int not null default 0
);

#导入数据
load data local infile 'D:/liwork/data/-bill.csv' 
	into table Bill
    fields terminated by ',';

select * from Bill;

导入OrderDetail表:

--  OrderDetail table
create table OrderDetail(
    billnumber varchar(20) not null default '-',
    detail varchar(20) not null default '-',
    pay int not null default 0
);

#导入数据
load data local infile 'D:/liwork/data/-order.csv' 
	into table OrderDetail
    fields terminated by ',';

select * from OrderDetail;

导入ShopDetail表:

--  ShopDetail table
create table ShopDetail(
    ShopName varchar(20) not null default '-',
    twotable int not null default 0,
    threetable int not null default 0,
    fourtable int not null default 0,
    alltable int not null default 0
);

#导入数据
load data local infile 'D:/liwork/data/-shop.csv' 
	into table ShopDetail
    fields terminated by ',';

select * from ShopDetail;

数据加工:

-- 数据加工
-- 创建单汇总金额表
Create table OrderGroup(
 select billnumber, sum(pay) as pay from OrderDetail
 group by billnumber
);

select * from OrderGroup;

-- 创建新单号详细表
Create table NewBill(
select b.*,o.pay,b.billdiscount * o.pay as rebate from bill as b left join ordergroup as o 
on b.billnumber = o.billnumber);

select * from NewBill;

NewBill表:
在这里插入图片描述


-- 创建新店面情况表
create table NewShopDetail(
select *, (twotable * 2 + threetable * 3 + fourtable * 6) as allseats 
from shopdetail as s);

select * from NewShopDetail;

NewShopDetail表:
在这里插入图片描述

-- 创建新点菜明细表
create table neworderdetail(
select b.shopname,o.* from orderdetail as o left join bill as b 
on o.billnumber = b.billnumber
);

select * from neworderdetail;

neworderdetail表:
在这里插入图片描述


-- 创建店汇总信息表
create table ShopTotal(
select b.shopname as 店名, count(b.billnumber) as 单数, 
sum(b.peoplecount) as 人数,sum(b.rebate) as 折扣总金额,sum(b.pay) as 店汇总金额, 
sum(b.pay)/count(b.billnumber) as 单均消费, 
sum(b.pay)/sum(b.peoplecount) as 人均消费, 
s.alltable as 总台数,
s.allseats as 总座位数,
count(b.billnumber)/s.alltable as 翻台率,
sum(b.peoplecount)/s.allseats as 上座率,
sum(b.rebate)/sum(b.pay) as 折扣率
from newbill as b left join newshopdetail as s 
on b.shopname = s.shopname
group by b.shopname);

select * from shoptotal;

shoptotal表:
在这里插入图片描述

4、excel形成分析仪

从excel中连接MySQL,导入数据后做数据透视图,不断调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/349722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何自学芯片设计?

众所周知,芯片设计自学还是比较困难的,更不存在速成的。这里简单说一下学习的规划。 学会相应的知识 无论是科班毕业,还是理工科专业,想要入行IC,那就一定要具备相关的基础知识。尤其是在学校里,学习的很…

Centos7 内核升级

一、背景 在 CentOS 使用过程中,高版本的应用环境可能需要更高版本的内核才能支持,所以难免需要升级内核,所以下面将介绍yum和rpm两种升级内核方式。 关于内核种类: kernel-ml——kernel-ml 中的ml是英文【 mainline stable 】的缩写&…

2W字正则表达式基础知识总结,这一篇就够了!!(含前端常用案例,建议收藏)

正则表达式 (Regular Expression,简称 RE 或 regexp ) 是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")正则表达式使用单个字符串来描述、匹配一系列匹…

wpscan常见的使用方法

目录 简单介绍 暴力破解 信息收集 指定用户爆破 命令集合 简单介绍 Wordpress是一个以PHP和MySQL为平台的免费自由开源的博客软件和内容管理系统。 WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安…

微信微店怎么开店铺步骤【微信开店】

商家在微信平台主要是通过什么方式进行卖货呢,大家的答案都会是微信小店、小程序微店铺之类的,的确微信店铺是商家在微信平台上重要的卖货渠道,那么微信微店怎么开店铺,下面就给大家分享微信微店怎么开店铺步骤。 一、准备好资料…

Netty启动流程源码剖析

案例 本文利用natty-all-source 包下的的demo案例 echo来分析下源码,代码如下:server 端代码 /*** Echoes back any received data from a client.*/ public final class EchoServer {static final boolean SSL System.getProperty("ssl") …

day14_oop_抽象_接口

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 多态的好处: 扩展性强.加入新的功能,不需要改动代码降低代码耦合度(解耦合或者松耦合) 一、抽象类 1.1 抽象类…

C# VS2010 Winform 学习笔记遇见问题

参考书本《Visual C# .Net程序设计与应用开发》 学习C#: 对象的封装性:通过get()、set()函数读写。 1.Visual C#面向对象编程中的继承、多态。 2.enum:枚举,array.copy方法:数组拷贝,public static voi…

以应用为导向,看声纹识别中的音频伪造问题

声纹识别,又称说话人识别,是根据语音信号中的声纹特征来识别话者身份的过程,也是一种重要的生物认证手段。历经几十年的研究,当前声纹识别系统已取得了令人满意的性能表现,并在安防、司法、金融、家居等诸多领域中完成…

jenkins构建报错:.java:16: error: package javafx.util does not exist

1、报错 jenkins构建报错 package javafx.util does not exist2、报错原因 代码发现使用了javafx类,该类仅存在OracleJDK中,OpenJDK中没有该类。 jenkins服务器安装的是openjdk 3、卸载OpenJDK 具体不概述了 4、离线安装OracleJDK 1)…

SPI规范的使用和简介

前言 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的…

win11/10+opencv3.x/4.x配置 VS2019方法(简单使用,亲测)

首先下载 opencv,去官网下载百度》输入opencv,点击opencv|home,进入官网。点击 “Library”---->Release点击 对应版本下的 window版本,点击 --安装--extract---》设置路径。这个就是把库文件扩展到指定的路径下,扩…

Nacos集群+Nginx负载均衡

搭建Nacos集群 注意: 3个或3个以上Nacos节点才能构成集群。要求服务器内存分配最好大于6G以上(如果不够则需修改nacos启动脚本中的默认内存配置)根据nacos自带的mysql建库脚本建立对应数据库(/conf/nacos-mysql.sql)如果是三台服…

KNN&K-means从入门到实战

作者:王同学 来源:投稿 编辑:学姐 1. 基本概念 1.1 KNN k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法。 k近邻法的输入为实例的特征向量对应于特征空间的点;输出为实例的类别&…

发布新闻的步骤和技巧

发布新闻是一项非常重要的任务,无论是企业还是个人,都可以通过发布新闻来传达信息和宣传自己。以下是发布新闻的步骤和技巧,帮助你成功发布一条新闻。1、确定新闻的目标受众在发布新闻之前,你需要确定新闻的目标受众。你希望这条新…

多元回归分析 | CNN-GRU卷积门控循环单元多输入单输出预测(Matlab完整程序)

多元回归分析 | CNN-GRU卷积门控循环单元多输入单输出预测(Matlab完整程序) 目录 多元回归分析 | CNN-GRU卷积门控循环单元多输入单输出预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练结束: 已完成最大轮数。 训练集平均绝对误差MAE…

vue3+ts项目采用canvas模拟批注功能

vue3ts项目模拟批注 一、项目需求: 移动端:实现点击“批注”,随手指绘制出线条,线条封闭之后,视为圈记成功,进而输入评论内容——批注; 二、实现思路: 1.“批注”按钮控制canvas画…

关于cFosSpeed如何配置

cFosSpeed配置一、检查Calibration Done情况二、优化Ping时间和线路校准三、测网速四、cFosSpeed控制台五、配置参数一、检查Calibration Done情况 安装完毕,激活成功后。 右键------>选项------>设置, 打开适配器信息,查看Calibra…

leaflet: 一个marker的世界旅行动画(077)

第077个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中动态的设置marker,这里起个美丽的名字就叫做一个marker的世界旅行。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共76行)相关API参考:专栏目…

内核经典数据结构list 剖析

前言:linux内核中有很多经典的数据结构,list(也称list_head)为其中之一,这些数据结构都是使用C语言实,并且定义和实现都在单独的头文件list.h中。可以随时拿出来使用。list.h的定义不同linux发行版本路径不同,我们可以在/usr/incl…