商業智能(BI)實戰項目

商業智能(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.pswp.cn/diannao/37900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37900.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

商城自動化測試實戰 —— 登錄+滑塊驗證

hello大家好&#xff0c;我是你們的小編&#xff01; 本商城測試項目采取PO模型和數據分離式架構&#xff0c;采用pytestseleniumjenkins結合的方式進行腳本編寫與運行&#xff0c;項目架構如下&#xff1a; 1、創建項目名稱&#xff1a;code_shopping&#xff0c;創建所需項目…

openEuler安裝docker

在openEuler上安裝Docker&#xff0c;可以通過以下步驟進行&#xff1a; 1、更新軟件包索引&#xff1a; sudo yum makecache 2、安裝Docker&#xff1a; sudo yum install docker -y 3、啟動Docker服務&#xff1a; sudo systemctl start docker 4、設置Docker開機自啟&am…

010、GPT-5:AI新紀元的曙光與挑戰

目錄 GPT-5&#xff1a;AI新紀元的曙光與挑戰 1.革命性的個人助理 2.教育領域的變革 3.醫療健康的新篇章 4.科研創新的加速器 5.創意產業的新靈感 6.商業與經濟的智能化 7.社會治理的新工具 8.環境保護與可持續發展 9.倫理與社會影響 學術視角&#xff1a;AI發展的前…

惠海H6392 2.6v升5V 3.7V升9V 4.2V升12V 升壓恒壓芯片 小家電IC

惠海H6392升壓恒壓芯片是一款小家電、移動設備以及其他需要升壓恒壓電源的電子設備設計的DC-DC轉換器。這款芯片以其獨特的產品特性和廣泛的應用場景&#xff0c;為電子產品設計者提供了高效、穩定的電源解決方案。 產品描述&#xff1a; H6392采用了簡單的電流模式升壓技術&a…

使用Collections.shuffle打亂集合順序

使用Collections.shuffle打亂集合順序 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討如何使用Java中的Collections.shuffle方法來打亂集合的順序…

單例模式實現方式

單例模式 單例模式&#xff08;Singleton Pattern&#xff09;的主要目的是確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。 在 Java 中&#xff0c;實現單例模式的方式有幾種常見的方式 懶漢式 public class Singleton{private static final Singlet…

華為od-C卷200分題目4 -電腦病毒感染

華為od-C卷200分題目4 -電腦病毒感染 一個局域網內有很多臺電腦&#xff0c;分別標注為0 - N-1的數字。相連接的電腦距離不一樣&#xff0c;所以感染時間不一樣&#xff0c;感染時間用t表示。其中網絡內一個電腦被病毒感染&#xff0c;其感染網絡內所有的電腦需要最少需要多長…

二叉樹的題目

目錄 1、將遍歷的結果放在list中 2、判斷兩棵樹是否相同 3、翻轉二叉樹 4、判斷平衡二叉樹 5、判斷二叉樹是否對稱 6、判斷是否為完全二叉樹 先創建一個二叉樹 public class BinaryTree {static class TreeNode {public char val;public TreeNode left;public TreeNode …

NextJs 系列文章

NextJs 系列文章 NextJs 初級篇 - 安裝 | 路由 | 中間件NextJs 渲染篇 - 什么是CSR、SSR、SSG、ISR 和服務端/客戶端組件NextJs 數據篇 - 數據獲取 | 緩存 | Server Actions

使用Java實現通用樹形結構轉換工具類:深入解析TreeUtil和TreeNode接口

文章目錄 一、TreeNode接口設計二、TreeUtil工具類設計三、示例&#xff1a;實現TreeNode接口的節點類四、示例&#xff1a;使用TreeUtil構建樹形結構五、總結 &#x1f389;歡迎來到Java學習路線專欄~探索Java中的靜態變量與實例變量 ☆* o(≧▽≦)o *☆嗨~我是IT陳寒&#x1…

基于vue腳手架創建的圖書商城

功能簡介 此項目包括首頁, 搜索列表, 商品詳情, 購物車, 訂單, 支付, 用戶登陸/注冊等多個子模塊&#xff0c;使用 Vue 全家 桶ES6WebpackAxios 等技術&#xff0c;采用模塊化、組件化、工程化的模式開發。 功能模塊圖 2.1首頁 2.2.搜索列表 2.3.商品詳情 2.4.購物車 2.5.支…

條件測試,if語句,case語句

測試命令 格式1&#xff1a;test 條件表達式 格式2&#xff1a;[條件表達式] test命令和 [ ] 相同&#xff0c;建議使用[ ] #方框中要空格 #用test可能會不小心定義變量文件測試 常見的測試操作符含義-d檢查文件是否存在且為目錄-f檢查文件是否存在且為常規文件-L測試…

解決json日期格式問題

解決json日期格式問題 1.json默認輸出時間格式 RequestMapping("/json3") public String json3() throws JsonProcessingException {ObjectMapper mapper new ObjectMapper();//創建時間一個對象&#xff0c;java.util.DateDate date new Date();//將我們的對象解…

Knife4j:快速入門

1. 概述 Knife4j是一個用于生成和展示API文檔的工具&#xff0c;同時它還提供了在線調試的功能&#xff0c;下圖是其工作界面。 * Knife4j有多個版本&#xff0c;最新版的Knife4j基于開源項目springdoc-openapi&#xff0c;這個開源項目的核心功能就是根據SpringBoot項目中的代…

uniapp uniCloud云開發

uniCloud概述 uniCloud 是 DCloud 聯合阿里云、騰訊云、支付寶云&#xff0c;為開發者提供的基于 serverless 模式和 js 編程的云開發平臺。 uniCloud 的 web控制臺地址&#xff1a;https://unicloud.dcloud.net.cn 文檔&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…

大模型應用-多模態和大模型是如何相互成就的

前言 如果單純的將大模型用來聊天&#xff0c;那就是low了。 而多模態賦予了大模型更多的現實價值&#xff0c;大模型則助力多模態變得更強大。 多模態 我們所處的是一個物理世界&#xff0c;不同事物之間模態多種多樣&#xff0c;即便是簡單的文本&#xff0c;按照語言&am…

【Docker0】網絡更改

目錄 1. 停止docker服務 2. 關閉docker默認橋接網絡接口 3. 從系統刪除docker0接口 4. 創建一個名為bridge0的新接口 5. 添加ip地址和子網掩碼 6. 啟用bridge0接口 7. &#xff08;如果沒起來就執行該句&#xff09; 8. 查看ip 1. 停止docker服務 sudo service docker…

c++用什么軟件編程?都有哪些?

c用什么軟件編程&#xff1f;都有哪些&#xff1f; C 作為一種高效、面向對象的編程語言&#xff0c;廣泛應用于軟件開發、游戲開發、嵌入式系統等領域。那么在進行 C 編程時&#xff0c;我們通常會使用哪些軟件呢&#xff1f;下面就來具體分析。 1. Visual Studio Visual Stu…

深入 SSH:解鎖本地轉發、遠程轉發和動態轉發的潛力

文章目錄 前言一、解鎖內部服務&#xff1a;SSH 本地轉發1.1 什么是 SSH 本地轉發1.2 本地轉發應用場景 二、打開外部訪問大門&#xff1a;SSH 遠程轉發2.1 什么是 SSH 遠程轉發2.2 遠程轉發應用場景 三、動態轉發&#xff1a;SSH 讓你擁有自己的 VPN3.1 什么是 SSH 動態轉發3.…

mysqldump全備份之后,如何只恢復一個庫或者一個表

在實際工作中,一個MySQL實例中可能有多個database。而我們備份時,通常采用完全備份,將所有database都備份到一個文件中。 但是,偶爾會遇到只恢復一個database或者一個表的情況。怎么解決呢? 一、利用全備恢復一個庫(database)的數據 案例:朋友在群里問, MySQL全庫備份…