商业智能(BI)实战项目

news2024/11/24 20:13:03

商业智能(BI)实战项目

期待您的关注

☀大数据学习笔记

1.实现的功能

2.数据库操作步骤

创建数据库:

create database card;

创建表:

create table card_apply
(
cid bigint primary key auto_increment
,apply_uid bigint
,apply_entrance varchar(90)
,apply_dt varchar(90)
,access_state varchar(90)
,issuccess varchar(90)
,source varchar(90)
,isact varchar(10)
,isfirst varchar(10)
);

环比:这个月减去上个月的和上个月的比

同比:今年本月减去去年同期和去年同月的比

插入数据:

insert into card_apply values
(null,1,'广告banner','2024-06-04','点击','不成功','直销','否','否')
,(null,2,'首页con','2024-06-04','点击','不成功','直销','否','否')
,(null,3,'交叉销售广告位','2024-06-04','点击','不成功','直销','否','否')
,(null,4,'信用卡专区','2024-05-02','点击','不成功','直销','否','否')
,(null,5,'交叉销售广告位','2024-05-03','点击','不成功','直销','否','否')
,(null,6,'广告banner','2024-05-03','点击','不成功','直销','否','否')
,(null,7,'广告banner','2023-06-03','点击','成功','直销','是','是')
,(null,8,'交叉销售广告位','2023-06-03','点击','成功','直销','是','是');


select * from card_apply;

3.计算本月信用卡申请人数及同比环比

打开Tableau 连接MySQL 双击新自定义SQL 写入SQL语句



select
a.user_cnt curr_month_user_cnt,
(a.user_cnt-b.user_cnt)/b.user_cnt upper_month_user_cnt,
(a.user_cnt-c.user_cnt)/c.user_cnt last_year_user_cnt
from
(
select count(distinct(apply_uid)) user_cnt from card_apply where date_format(apply_dt,'%Y-%m')=date_format(current_date(),'%Y-%m')
)a
,(
select count(distinct(apply_uid)) user_cnt from card_apply where date_format(apply_dt,'%Y-%m')=date_format(date_sub(current_date(), interval 1 month),'%Y-%m')
)b
,(
select count(distinct(apply_uid)) user_cnt from card_apply where date_format(apply_dt,'%Y-%m')=date_format(date_sub(current_date(), interval 12 month),'%Y-%m')
)c

MySQL日期函数

然后跳转到工作表

4.计算本月信用卡核卡成功人数及同比环比

为了方便计算 我们再插入几条数据:

insert into card_apply values
(null,9,'交叉销售广告位','2024-05-03','点击','成功','直销','是','是'),
(null,10,'信用卡专区','2024-06-03','点击','成功','直销','是','是'),
(null,11,'首页con','2024-05-08','点击','成功','直销','是','是');

打开Tableau 连接MySQL 双击新自定义SQL 写入SQL语句

SELECT
a.success_uid current_success_uid
,(a.success_uid-b.success_uid)/b.success_uid last_month_success_uid
,(a.success_uid-c.success_uid)/c.success_uid last_year_success_uid
FROM
(
select count(distinct(apply_uid)) success_uid from card_apply where issuccess = '成功' and date_format(apply_dt,'%Y-%M') = date_format(current_date(),'%Y-%M')
)a
,(
select count(distinct(apply_uid)) success_uid from card_apply where issuccess = '成功' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 1 month),'%Y-%M')
)b
,(
select count(distinct(apply_uid)) success_uid from card_apply where issuccess = '成功' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 12 month),'%Y-%M')
)c

最终结果

5.计算本月信用卡激活人数及同比环比

为了方便计算 我们再插入几条数据:

insert into card_apply values
(null,12,'交叉销售广告位','2024-06-23','点击','成功','直销','是','是'),
(null,13,'信用卡专区','2024-06-18','点击','成功','直销','是','是'),
(null,14,'首页con','2024-05-08','点击','不成功','直销','是','是');

打开Tableau 连接MySQL 双击新自定义SQL 写入SQL语句

SELECT
a.act_uid current_act_uid
,(a.act_uid-b.act_uid)/b.act_uid last_month_act_uid
,(a.act_uid-c.act_uid)/c.act_uid last_year_act_uid
FROM
(
select count(distinct(apply_uid)) act_uid from card_apply where isact = '是' and date_format(apply_dt,'%Y-%M') = date_format(current_date(),'%Y-%M')
)a
,(
select count(distinct(apply_uid)) act_uid from card_apply where isact = '是' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 1 month),'%Y-%M')
)b
,(
select count(distinct(apply_uid)) act_uid from card_apply where isact = '是' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 12 month),'%Y-%M')
)c

最终结果

6.计算本月信用卡首刷人数及同比环比

为了方便计算 我们再插入几条数据:


insert into card_apply values
(null,15,'交叉销售广告位','2024-06-26','点击','成功','直销','是','否'),
(null,16,'信用卡专区','2024-06-11','点击','成功','直销','是','是'),
(null,17,'首页con','2023-05-08','点击','不成功','直销','是','是');

打开Tableau 连接MySQL 双击新自定义SQL 写入SQL语句

SELECT
a.first_uid current_first_uid
,(a.first_uid-b.first_uid)/b.first_uid last_month_first_uid
,(a.first_uid-c.first_uid)/c.first_uid last_year_first_uid
FROM
(
select count(distinct(apply_uid)) first_uid from card_apply where isfirst = '是' and date_format(apply_dt,'%Y-%M') = date_format(current_date(),'%Y-%M')
)a
,(
select count(distinct(apply_uid)) first_uid from card_apply where isfirst = '是' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 1 month),'%Y-%M')
)b
,(
select count(distinct(apply_uid)) first_uid from card_apply where isfirst = '是' and date_format(apply_dt,'%Y-%M') = date_format(date_sub(current_date(),interval 12 month),'%Y-%M')
)c

最终结果

7.求本月信用卡来源

为了方便计算 我们再插入几条数据:

insert into card_apply values
(null,15,'交叉销售广告位','2024-06-29','点击','成功','网络','是','是'),
(null,16,'信用卡专区','2024-06-18','点击','成功','网络','是','是'),
(null,17,'首页con','2024-06-06','点击','不成功','网络','是','是'),
(null,18,'交叉销售广告位','2024-06-21','点击','成功','分行','是','是'),
(null,19,'信用卡专区','2024-06-30','点击','成功','分行','是','是'),
(null,20,'首页con','2024-06-09','点击','不成功','分行','是','是'),
(null,21,'信用卡专区','2024-06-30','点击','成功','网络外部平台','是','是'),
(null,22,'首页con','2024-06-09','点击','不成功','网络外部平台','是','是'),
(null,23,'信用卡专区','2024-06-30','点击','成功','网络外部平台','是','是'),
(null,24,'首页con','2024-06-09','点击','不成功','网络外部平台','是','是');

SELECT
count(*)
,source
FROM card_apply where date_format(apply_dt,'%Y-%M')=date_format(current_date(),'%Y-%M')
group by source;

8.求本月信用卡核卡成功用户来源

SELECT
COUNT(*),source
FROM card_apply
WHERE DATE_FORMAT(apply_dt,'%Y-%M')=DATE_FORMAT(CURRENT_DATE(),'%Y-%M') and issuccess = '成功'
GROUP BY source

9.求本月APP信用卡申请入口分布

SELECT
COUNT(*),apply_entrance
FROM card_apply
WHERE DATE_FORMAT(apply_dt,'%Y-%M')=DATE_FORMAT(CURRENT_DATE(),'%Y-%M')
GROUP BY apply_entrance

10.求本月APP信用卡申请和提交用户数

为了方便计算 我们再插入几条数据:


insert into card_apply values
(null,25,'交叉销售广告位','2024-06-26','提交','成功','直销','是','否'),
(null,26,'信用卡专区','2024-06-11','提交','成功','直销','是','是'),
(null,27,'首页con','2023-05-08','提交','不成功','直销','是','是'),
(null,28,'交叉销售广告位','2024-06-25','提交','成功','直销','是','否'),
(null,29,'信用卡专区','2024-06-25','提交','成功','直销','是','是'),
(null,30,'首页con','2023-06-09','提交','不成功','直销','是','是'),
(null,31,'交叉销售广告位','2024-06-25','提交','成功','直销','是','否'),
(null,32,'信用卡专区','2024-06-24','提交','成功','直销','是','是'),
(null,33,'首页con','2023-06-09','提交','不成功','直销','是','是'),
(null,34,'交叉销售广告位','2024-06-18','提交','成功','直销','是','否'),
(null,35,'信用卡专区','2024-06-19','提交','成功','直销','是','是'),
(null,36,'首页con','2023-06-09','提交','不成功','直销','是','是'),
(null,37,'首页con','2023-06-21','提交','不成功','直销','是','是'),
(null,38,'首页con','2023-06-22','提交','不成功','直销','是','是'),
(null,39,'首页con','2023-06-23','提交','不成功','直销','是','是'),
(null,40,'首页con','2023-06-24','提交','不成功','直销','是','是'),
(null,41,'首页con','2023-06-20','提交','不成功','直销','是','是')

SELECT
access_state
,apply_dt
,count(distinct(apply_uid)) user_cnt
FROM card_apply
WHERE DATE_FORMAT(apply_dt,'%Y-%M')=DATE_FORMAT(CURRENT_DATE(),'%Y-%M')
and (access_state = '点击' or access_state = '提交')
group by apply_dt,access_state

由于数据量较小 所以曲线不是那么圆顺 如果我们想要让它变得更丝滑 那么我们可以添加大量数据

11.汽车服务用户分析的设计与实现

create database app;

use app;


create table app_log
(
log_id bigint primary key auto_increment
,access_dt varchar(90)
,user_id bigint
,browse_page varchar(10)
,app_status varchar(90)
,operator varchar(30)
,net_type varchar(20)
);

插入数据:

insert into app_log values 
(null,'2024-06-01',1,'A','异常','移动','4G'),
(null,'2024-06-02',2,'B','异常','移动','4G'),
(null,'2024-06-01',2,'C','异常','移动','4G'),
(null,'2024-06-02',3,'D','异常','移动','4G'),
(null,'2024-06-02',4,'D','异常','移动','4G')

1)求每日新增用户数

那么 该如何求新增用户数呢 (使用连接查询)

select 
'2024-06-02' dt
,count(distinct(a.user_id)) num
from 
(
select user_id from app_log where date_format(access_dt,'%Y-%m-%d') = '2024-06-02'
)a 
left join 
(
select user_id from app_log where date_format(access_dt,'%Y-%m-%d') < '2024-06-02'
)b
on a.user_id = b.user_id WHERE b.user_id is null

2)求新增用户7日留存率

日期加减:date_sub(current_date(),interval 8 day)

select 
c.dt,
c.user_cnt/e.user_cnt remain_ration
from
(
select 
date_sub('2024-06-02',interval 7 day) dt,
count(distinct(a.user_id)) user_cnt
from 
(
select user_id from app_log where date_format(access_dt,'%Y-%m-%d') = '2024-06-02'
)a 
inner join 
(
select user_id from app_log where date_format(access_dt,'%Y-%m-%d') = date_sub('2024-06-02',interval 8 day)
)b
on a.user_id = b.user_id
)c 
,
(
select count(distinct(user_id)) user_cnt
from 
(
select user_id from app_log where date_format(access_dt,'%Y-%m-%d') = date_sub('2024-06-02',interval 8 day)
)b
)e

3)求每周新增用户数

日期转周:week(current_date())

select
count(distinct(a.user_id)) user_cnt
from 
(
select 
distinct(user_id) user_id
from app_log where week(access_dt) = 23
)a 
left join 
(
select 
distinct(user_id) user_id
from app_log where week(access_dt) = 22
)b 
on a.user_id = b.user_id where b.user_id is null

4)求新增用户八周留存
select
d.week,
d.user_cnt/e.user_cnt remain_ration
from 
(
select 
week(date_add(current_date(),interval -9 week)) week,
count(distinct(a.user_id)) user_cnt
from 
(
select user_id from app_log where week(access_dt)=week(current_date())
)a 
inner join 
(
select user_id from app_log where week(access_dt)=week(date_add(current_date(),interval -9 week))
)b on a.user_id = b.user_id
)d,
(
select count(distinct(b.user_id)) user_cnt
from
(
select user_id from app_log where week(access_dt)=week(date_add(current_date(),interval -9 week))
)b
)e

5)求30日活跃用户

select
count(distinct(user_id)) user_cnt
from app_log 
where access_dt between date_add(current_date(),interval -30 day) and current_date()

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

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

相关文章

我的北航MEM成长之旅

领完毕业证&#xff0c;2年的学业生涯到此结束。为了方便大家理解后续的内容&#xff0c;这里我们先解释下基本信息&#xff0c;比如MEM到底是个啥&#xff1f;以及北航的MEM都学什么&#xff1f; 1 MEM解读 1.1 MEM是什么&#xff1f; MEM是"Master of Engineering Ma…

[数据集][目标检测]城市街道井盖破损未盖丢失检测数据集VOC+YOLO格式4404张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4404 标注数量(xml文件个数)&#xff1a;4404 标注数量(txt文件个数)&#xff1a;4404 标注…

CentOS 7.9 CDH6.3.2集群生产环境实战部署指南

一、环境准备 1、系统环境&#xff1a; # cat /etc/os-release 2、准备工作&#xff1a; 部署资源分配 节点centos 7.9&#xff08;生产&#xff09;节点规划Postgresql部署组件备注pgsql32c、128G、2TB国产数据库Postgresql&#xff08;翰高&#xff09;可根据实际情况调整…

通达信趋势动能资金加速异动幅图指标公式源码

通达信趋势动能资金加速异动幅图指标公式源码&#xff1a; B:SUM(AMOUNT*CLOSE,1)/SUM(AMOUNT,1); B1:EMA(B,5); TDX5:(B-B1)*100/B,NODRAW,COLORRED; TDX6:TDX5!DRAWNULL; TDX7:(CLOSE-LLV(LOW,13))/(HHV(HIGH,13)-LLV(LOW,13))*100; TDX8:SMA(TDX7,4,1); TDX9:SMA(TDX8,3,1)…

Git Flow 工作流学习要点

Git Flow 工作流学习要点 Git Flow — 流程图Git Flow — 操作指令优点&#xff1a;缺点&#xff1a;Git Flow 分支类型Git Flow 工作流程简述关于 feature 分支关于 Release 分支关于 hotfix 分支 总结 Git Flow — 流程图 图片来源&#xff1a;https://nvie.com/posts/a-succ…

电子名片小程序源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 电子名片小程序源码系统是一款基于前后端分离架构的综合性平台&#xff0c;旨在为用户提供一个集销售名片和企业商城于一体的解决方案。该系统采用先进的技术手段&#xff0c;实现了个性化名片设计、便捷的销售功能、企业商城模块等一系列实用功能。同时&#xff0c;…

惠普笔记本双指触摸不滚屏

查看笔记本型号 一般在笔记本背面很小的字那里 进入惠普官网 笔记本、台式机、打印机、墨盒与硒鼓 | 中国惠普 (hp.com) 选择“支持”>“解决问题”>“软件与驱动程序” 选择笔记本 输入型号&#xff0c;选择操作系统 下载驱动进行完整 重启之后进行测试

HBase与Hive数据交互

一、hbase数据导入hive hive通过建立外部表和普通表加载hbase表数据到hive表中。 两种方式加载hbase中的表到hive中&#xff0c;一是hive创建外部表关联hbase表数据&#xff0c;是hive创建普通表将hbase的数据加载到本地。 1.创建外部表 hbase中创建test表&#xff0c;且插入…

stylelint 配置

1.vscode 安装插件Stylelint 2.项目安装插件 pnpm i stylelint stylelint-config-standard stylelint-config-recommended-scss stylelint-config-recommended-vue postcss postcss-html postcss-scss stylelint-config-recess-order stylelint-config-html -D 依赖 说明 备…

python笔记----少儿编程课程

第1课&#xff1a; 认识新朋友-python 知识点&#xff1a; 1、在英文状态下编写Python语句。 2、内置函数print()将结果输出到标准的控制台上&#xff0c;它的基本语法格式如下&#xff1a; print("即将输出的内容") #输出的内容要用引号引起来&#xff0c;可…

一加Ace3 刷机救砖简化说明

注意&#xff1a;工具使用英文目录&#xff0c;支持救砖和降级。PJE110国行版&#xff0c;CPH2609国际版。目前国行版不能完美转换国际版&#xff0c;每次升级都需要刷oplusstanvbk&#xff0c;不建议使用。跨国转换或ROOT一定先解锁Bootloader&#xff0c;可以使用“一加全能工…

重温react-10(函数组件和类组件的ref获取方式)

App.js的代码 06是函数组件 07是类组件 import React, { useEffect, useRef } from react; import LearnFunction06 from ./LearnFunction06; // 函数组件和类组件的ref使用方式 import LearnFunction07 from ./LearnFunction07; // 函数组件和类组件的ref使用方式 export de…

Vite: 插件开发

概述 说到自定义的能力&#xff0c;肯定很容易想到 插件机制 &#xff0c;利用一个个插件来扩展构建工具自身的能力虽然 Vite 的插件机制是基于 Rollup 来设计的&#xff0c;但实际上 Vite 的插件机制也包含了自己独有的一部分&#xff0c;与Rollup 的各个插件 Hook 并非完全兼…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第50课-姿式识别控制机器人

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第50课-姿式识别控制机器人 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…

白话EAGLE2:解锁大模型的“打草稿”技术

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

七天速通javaSE:第五天 数组基础

文章目录 前言一、认识数组二、数组的声明和创建1. 声明数组变量2. 创建数组3. 变量的初始化&#xff08;赋值&#xff09;3.1 静态初始化3.2 动态初始化 3. 示例 三、数组的使用1. 循环1.1 普通for循环1.2 For-Each 循环 2. 数组作为函数的参数和返回值 前言 本文将为大家介绍…

vue+fineReport 使用前端搜索+报表显示数据

--fineReprot 将需要搜索的参数添加到模版参数 sql&#xff1a; --前端传递参数 注&#xff1a;因为每次点击搜索的结果需要不一样&#xff0c;还要传递一个时间戳的参数&#xff1a; let timesamp new Date().getTime()

【模板】项目建设方案(Word原件)

1 引言 1.1 编写目的 1.2 项目概述 1.3 名词解释 2 项目背景 3 业务分析 3.1 业务需求 3.2 业务需求分析与解决思路 3.3 数据需求分析【可选】 4 项目建设总体规划【可选】 4.1 系统定位【可选】 4.2 系统建设规划 5 建设目标 5.1 总体目标 5.2 分阶段目标【可选】 5.2.1 业务目…

ICMAN触摸芯片之滑轮滑条演示

ICMAN触摸芯片之滑轮滑条演示 ICMAN触摸芯片实现的滑轮滑条方案—— 按键处理逻辑快速&#xff0c;物理结构定位&#xff0c;定位精准&#xff0c;实现简单&#xff0c; 属于按键滑轮滑条&#xff0c;由硬件实现的专用触摸芯片通过滑轮滑条结构设计来实现。 常见的硬件应用&a…