BDA初级分析——SQL多表连接应用

news2024/11/24 10:36:01

一、用SQL拼接数据

三个初始数据

 问题1:在所有的数据里,销售额最高的产品品类名是什么?

问题2:是否有什么产品是在所观测的时间里没有被购买过的?

拼接数据:JOIN

join,加入

作用:连接多张表,根据两张表中的关联字段,将两张表拼在一起

写法:表1 JOIN 表2 ON 表1.连接字段=表2.连接字

 

在所有的数据里,销售额最高的产品品类名是什么?

 

 Sku:两张表基于sku连接,拼接到一起

代码解读

SELECT cat_name,SUM(rev) sum_rev
FROM orders a
INNER JOIN product b
ON a.sku=b.sku
GROUP BY cat_name
ORDER BY sum_rev DESC;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  

 INNER JOIN

保留左右表格交集的部分

 

 LEFT JOIN

保留JOIN左边的表格全部的内容

 

 

RIGHT JOIN

保留JOIN右边的表格全部的内容

 

 哪些产品整个这段时间里都是没有人购买的?

 代码解读

SELECT a.sku_name,sum(rev)
FROM product a
LEFT JOIN orders b
ON a.sku=b.sku
GROUP BY cat_name
ORDER BY sum_rev DESC;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

 

二、用SQL聚合数据

用户从注册到购买之间花费了多长时间?

 

 代码解读

CREATE TABLE user_first_order
AS
SELECT user_id, MIN(order_dt) first_order
FROM orders
GROUP BY user_id;


SELECT a.user_id, b.first_order, a.reg_dt, datediff(b.first_order,a.reg_dt)
as reg_to_buy
FROM users a
INNER JOIN user_first_order b
ON a.user_id=b.user_id
ORDER BY reg_to_buy;

 

 

 

不同周期完成首单的用户、 不同装修计划和特征的用户在首次购买上是不是会表现出不同的行为?

 代码解读

CREATE TABLE user_reg_to_order as
SELECT
a.user_id,b.first_order,a.reg_dt, datediff(b.first_order,a.reg_dt)
as reg_to_buy
FROM users a
INNER JOIN user_first_order b
ON a.user_id=b.user_id
ORDER BY reg_to_buy;


SELECT
case when reg_to_buy <=30 then '30天内'
when reg_to_buy <=90 then '90天内'
when reg_to_buy <=180 then '180天内'
when reg_to_buy <=365 then '1年内'
else '超过1年' end as reg_to_buy_group,COUNT(user_id)
from user_reg_to_order
group by reg_to_buy_group;

 

 代码解读

SELECT c.plan_new,count(Distinct a.user_id) total_buyers, sum(units) as total_units,sum(rev) as total_rev
FROM
orders a INNER JOIN user_reg_to_order b
ON a.user_id=b.user_id and a.order_dt=b.first_order
INNER JOIN users_new c
ON a.user_id=c.user_id
WHERE b.reg_to_buy<=90
GROUP BY c.plan_new;

 

 三、课后小结

 

 

四、随堂练习

 正确答案: 错误
解析:两端代码的连接条件是相同的,a LEFT JOIN b和bRIGHT JOIN a可以达成同样的效果

 

正确答案: 正确
解析:
在SQL中,INNER JOIN也可以被简写为JOIN 

 正确答案:错误 
解析:取的是a的全部记录b中能匹配上的部分记录,b匹配不上的部分会给null

正确答案:正确
解析:
在SQL中,多表连接可以通过JOIN实现 

 正确答案: 错误 
解析:
INNER JOIN取的是交集的部分

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

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

相关文章

crontab下定时任务批量注释和批量放开

背景&#xff1a;实际项目中我们在Linux系统中用crontab配置了上百个定时任务&#xff0c;有的时候做配置修改等需要同时注释掉这些任务&#xff0c;让它们都不在执行&#xff0c;找了一会儿终于发现了解决办法&#xff0c;&#x1f604; 模拟项目中的任务如下 我就随机写了两…

最快的JS甘特图:Bryntum Gantt 5.5.1 Crack

最快的JS甘特图 Bryntum Gantt 是一个超快速且完全可定制的甘特图套件&#xff0c;适用于您的 React / Angular / Vue / JS 应用程序。 快如闪电 甘特图是用纯 JavaScript / ES6 构建的&#xff0c;并使用非常快速的渲染引擎。这意味着您可以加载大型数据集&#xff0c;并且仍然…

MNN学习笔记(八):使用MNN推理Mediapipe模型

1.项目说明 最近需要用到一些mediapipe中的模型功能&#xff0c;于是尝试对mediapipe中的一些模型进行转换&#xff0c;并使用MNN进行推理&#xff1b;主要模型包括&#xff1a;图像分类、人脸检测及人脸关键点mesh、手掌检测及手势关键点、人体检测及人体关键点、图像嵌入特征…

嵌入式:ARM Day6

作业:完成cortex-A7核UART总线实验 目的&#xff1a;1.输入a,显示b&#xff0c;将输入的字符的ASCII码下一位字符输出 2.原样输出输入的字符串 源码&#xff1a; uart4.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #incl…

个人论坛项目测试报告

目录 0.项目概述及部分测试用例展示 以下是部分测试用例&#xff1a; 进行一般的性能测试性能测试 1.摘要及版本修订记录 2.功能介绍 3.测试范围 3.1.功能性 3.2.可靠性 3.3.易用性 4.测试资源 4.1.人员介绍 4.2.测试环境 4.2.测试工具 5.测试策略 5.2.功能测试…

Vivado使用入门之三:I/O约束

一、导图概览 二、I/O约束 2.1 I/O约束的内容 I/O约束主要是对port的位置和电气特性进行设置&#xff0c;进入菜单栏Window的IO Ports&#xff0c;可以查看可约束的相关内容。 一些port的常用特性解释如下 Name: port的名称 Direction:port的输入输出类型&#xff0c;有三种…

后端开发12.商品模块

概述 简介 商品模块这个设计的非常复杂 效果图 数据库

【LeetCode-中等题】15. 三数之和

题目 题解一&#xff1a;双指针法 图解参考链接&#xff1a;画解算法&#xff1a;15. 三数之和 详解参考代码随想录讲的非常好 梦破碎的地方&#xff01;| LeetCode&#xff1a;15.三数之和 代码&#xff1a; class Solution {public List<List<Integer>> thre…

第 7 章 排序算法(5)(希尔排序)

7.8希尔排序 7.8.1简单插入排序存在的问题 我们看简单的插入排序可能存在的问题. 数组 arr {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是&#xff1a; {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6} 结论: 当需要插入的数…

Influxdb数据库(centos7)

Influxdb数据库 1、简介与使用场景 简介 InfluxDB是一个由InfluxData开发的开源时序型数据库&#xff0c;专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等&#xff0c;在DB-Engines Ranking时序型数据库排行榜上排名第一&#xff1a; InfluxDB广泛应用于DevOps…

odoo 设备增加二维码 python生成二维码的一个有意思的问题

odoo 设备增加二维码 python生成二维码的一个有意思的问题 在odoo设备集成中根据客户要求&#xff0c;增加了一个二维码&#xff0c;想包含一些信息&#xff0c;用python的二维码库qrcode&#xff0c;qrcode是二维码生成的Python开源库。 代码如下: ewmny 设备&#xff1a; …

开源远程控制硬件 BliKVM v4测试 1000公里外远程重装系统

测试准备 测试时间&#xff1a;20230818 测试硬件&#xff1a;BliKVM v4 文档 BliKVM v4是一款生产就绪、即插即用的 KVM-over-IP 设备&#xff0c;为专业用户提供了远程服务器或工作站管理的便捷解决方案。 它基于Linux并且完全开源。 借助 BliKVM&#xff0c;您可以轻松打…

机器学习算法-随机森林

目录 机器学习算法-随机森林 &#xff08;1&#xff09;构建单棵决策树。 决策树的构建过程 决策树的构建一般包含三个部分&#xff1a;特征选择、树的生成、剪枝。 机器学习算法-随机森林 机器学习算法-随机森林 随机森林是一种监督式学习算法&#xff0c;适用于分类和回…

9万字企业数字化技术中台、数据中台、工业互联网建设方案WORD

导读&#xff1a;原文《9万字企业数字化技术中台、数据中台、工业互联网建设方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目录 1 概述 1.1. 数字化企…

SPI ServiceLoader.load()无法加载实现类

[TOC](SPI ServiceLoader.load()无法加载实现类) 问题描述 项目是maven结构&#xff0c;其中的resources里结构如下&#xff1a; 解决方案 改为如下结构&#xff1a; 原因分析 问题出现的原因是&#xff1a;创建Directory时用点号隔开了 META-INFO.services ,结果META-…

chapter 3 Free electrons in solid - 3.1 自由电子模型

3.1 自由电子模型 Free electron model 研究晶体中的电子&#xff1a; 自由电子理论&#xff1a;不考虑离子实能带理论&#xff1a;考虑离子实&#xff08;周期性势场&#xff09;的作用 3.1.1 德鲁德模型 Drude Model - Classical Free Electron Model (1)德鲁德模型 德鲁…

ruoyi-vue-pro yudao 项目支付 pay 模块启用及相关SQL脚本

目前ruoyi-vue-pro 项目虽然开源&#xff0c;但是pay 支付模块被屏蔽了&#xff0c;查看文档却要收费 199元&#xff08;知识星球&#xff09;&#xff0c;价格有点太高了吧。 分享下如何启用 pay 模块&#xff0c;顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xml 启…

超详解——容器搭建ownCloud个人网盘

目录 在搭建开始前需要准备好所须的环境 拉取镜像 创建容器 创建mysql容器&#xff1a; 创建OwnCloud容器&#xff0c;并连接到数据库&#xff1a; 创建Nginx容器&#xff1a; 剩下的只需要根据向导安装指引步骤即可&#xff01;​编辑​编辑 docker-compose搭建请参照&…

正则表达式在PHP8中的应用案例-PHP8知识详解

正则表达式在php8中有许多应用案例。以下是一些常见的应用场景&#xff1a;如数据验证、数据提取、数据替换、url路由、文本搜索和过滤等。 1、数据验证 使用正则表达式可以对用户输入的数据进行验证&#xff0c;例如验证邮箱地址、手机号码、密码强度等。 下面是一个用正则表…

【算法】二分查找(整数二分和浮点数二分)

二分查找也称折半查找&#xff08;Binary Search&#xff09;&#xff0c;是一种效率较高的查找方法&#xff0c;时间复杂度为O(logN)。 二分查找采用了“分治”策略。使用二分查找时&#xff0c;数组中的元素之间得有单调性&#xff08;升序或者降序&#xff09;。 二分的模…