MySQL,练习

表结构参考:MySQL,等值联结、内部联结、多表连接、自联结、自然联结、外部联结、带聚集函数的联结-CSDN博客

1、找出购买了产品id=1023005的客户信息

# 联结三表,再过滤
SELECT customers.*
FROM orderitems,orders,customers
WHERE orderitems.order_num=orders.order_num AND orders.cust_id=customers.cust_id
	AND orderitems.prod_id=1023005;

2、找出产品id=1023005这一订单内的其它产品

SELECT A1.*
FROM orderitems as A1,orderitems as A2
WHERE A1.order_num=A2.order_num
AND A2.prod_id=1023005;
-- 自联结后过滤产品id

3、找出购买了id=1023005的客户,购买的其它产品(一个客户可能有多个订单)

SELECT o.cust_id,oi.order_num,p.*
FROM orderitems as oi,orders as o,products as p
	WHERE oi.order_num=o.order_num AND oi.prod_id=p.prod_id
	AND o.cust_id=(
			SELECT orders.cust_id
			FROM orderitems,orders
			WHERE orderitems.order_num=orders.order_num
				AND orderitems.prod_id=1023005
				);

4、查询同时购买了产品id=2023200和id=2023101的用户信息

SELECT *
FROM 
(SELECT customers.cust_id,customers.cust_name
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=1023200) as t1 
 
 join
 
(SELECT customers.cust_id,customers.cust_name
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=2023101) as t2
 
ON t1.cust_id=t2.cust_id;
-- 1、找出产品id为1023005的对应客户;
-- 2、找出产品id为2023101的对应客户;
-- 3、取2个结果集都存在的用户即可(内联结2个结果集)

5、查询购买了产品id=1023200,也可能购买了id=2023101的用户信息

SELECT *
FROM 
(SELECT customers.cust_id,customers.cust_name,orderitems.prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=2023200) as t1 
 
 left join
 
(SELECT customers.cust_id,customers.cust_name,orderitems.prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=2023101) as t2
 
ON t1.cust_id=t2.cust_id;
-- 1、找出产品id为2023200的对应客户;
-- 2、找出产品id为2023101的对应客户;
-- 3、(左联结2个结果集后)

6、查询购买了产品id=2023101,也可能购买了id=10232002023101的用户信息

SELECT *
FROM 
(SELECT customers.cust_id,customers.cust_name,orderitems.prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=2023200) as t1 
 
 RIGHT join
 
(SELECT customers.cust_id,customers.cust_name,orderitems.prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num
 AND prod_id=2023101) as t2
 
ON t1.cust_id=t2.cust_id;
-- 1、找出产品id为2023200的对应客户;
-- 2、找出产品id为2023101的对应客户;
-- 3、(右join联结2个结果集后,按照cust_id过滤)

7、查询每人每个订单的总花费

SELECT customers.cust_id,customers.cust_name,orders.order_num,SUM(orderitems.item_price)
FROM orders JOIN orderitems JOIN customers
WHERE orders.order_num=orderitems.order_num
	AND customers.cust_id=orders.cust_id
	GROUP BY orders.order_num;
-- 	联结三个表
-- 	带聚合的分组(按每个订单来分组)

8、查询每个人的总花费

SELECT customers.cust_id,customers.cust_name,SUM(orderitems.item_price)
FROM orders JOIN orderitems JOIN customers
WHERE orders.order_num=orderitems.order_num
	AND customers.cust_id=orders.cust_id
	GROUP BY customers.cust_id;
-- 	联结三个表
-- 	带聚合的分组(按每个用户来分组)

9、查询‘张’姓客户的数量

SELECT COUNT(*)
FROM customers
WHERE cust_name LIKE '张%';

10、查询没有购买产品的客户

SELECT *
FROM customers
WHERE cust_id NOT IN (
	SELECT  DISTINCT customers.cust_id
	FROM customers,orders
	WHERE customers.cust_id = orders.cust_id);
	
-- 	先查询出order表的客户id
-- 	再在客户表中取非集,即获取未购物的客户

11、查询消费最高的前三位客户

SELECT customers.cust_id,customers.cust_name,SUM(orderitems.item_price) as zongjia
FROM orders JOIN orderitems JOIN customers
WHERE orders.order_num=orderitems.order_num
	AND customers.cust_id=orders.cust_id
	GROUP BY customers.cust_id
	ORDER BY zongjia DESC
		LIMIT 3;
-- 	联结三个表
-- 	带聚合的分组(按每个用户来分组)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【String、StringBuilder 和 StringBuffer 的 区别】

✅ String、StringBuilder 和 StringBuffer 的 区别 ✅典型解析✅扩展知识仓✅String 的不可变性✅ 为什么JDK 9 中把String 的char[ ] 改成了 byte[ ] ? ✅为什么String设计成不可变的✅缓存✅安全性✅线程安全✅hashcode缓存✅ 性能 ✅String 的 " " 是如何实现的…

IDEA2023+JDK17+SpringBoot3+MySQL8后端接口开发实战课笔记

概述 花了很长的时间,终于把心心念念的SpringBoot3的实战课整理出来了。 今天是开心的一天,因为又多了一门课程可以奉献给大家,也是难过的一天,那就是又要开始重新找工作了。 如果我的粉丝里面有关于Golang或者Python的相关工作推…

算法题系列7·获得数组中多数元素

目录 题目描述 实现 提交结果 题目描述 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:…

深度学习 Day21——J1ResNet-50算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…

linux 串口测试指令和测试程序

一、串口设备查看 查看串口 (/dev) ls /dev/tty*查看串口(或串口终端)属性 ( /proc) cat /proc/tty/driver/serial 或 cat /proc/tt…

《Python Advanced Programming + Design Patterns + Clean Code》

清洁代码 — 学习如何编写可读、可理解且可维护的代码 高级Python编程知识 Python之常用设计模式 Advanced Programming装饰器 decorators生成器 & 迭代器with 上下文管理器面向对象Mixin 模式反射机制并发编程 Design Patterns设计模式分类简单工厂模式工厂模式 √抽象工厂…

什么是误差,什么是重构误差,误差与重构误差有什么区别?

重构误差 1.误差的概念2.重构误差的概念 1.误差的概念 在机器学习中,误差通常是指模型的输出与实际标签或者真实值之间的差异,通常用于评估模型的预测能力或者训练的优化过程。 2.重构误差的概念 重构误差是指通过学习到的模型来重新构建(或…

OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代

文章目录 机器视觉缺陷检测工业上常见缺陷检测方法内容简介作者简介目录读者对象如何阅读本书获取方式 机器视觉 机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工…

听GPT 讲Rust源代码--src/tools(21)

File: rust/src/tools/miri/src/shims/x86/mod.rs 在Rust的源代码中,rust/src/tools/miri/src/shims/x86/mod.rs文件的作用是为对x86平台的处理提供支持。它包含一些用于模拟硬件操作的shim函数和相关的类型定义。 具体来说,该文件中的函数是通过使用一组…

华为---登录USG6000V防火墙---console、web、telnet、ssh方式登录

目录 一、环境搭建 二、第一次登录USG6000V防火墙,即通过console方式登录 三、用户配置 四、web登录USG6000V防火墙 1. 用web创建的用户通过web方式登录USG6000V防火墙 2. 命令行创建的用户通过web方式登录USG6000V防火墙 五、ssh方式登录USG6000V防火墙 1. 用…

STM32CubeMX配置HAL库输入捕获

STM32CubeMX配置HAL库输入捕获 STM32的输入捕获功能可以用来测量脉冲宽度或者频率。其工作原理是,通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如 上升沿/下降沿)的时候,将当前定时器的值(TIMx_C…

被有道云笔记成功劝退拥抱Joplin(Joplin使用过程遇到的问题)

本人职业程序员,培训讲师(技术类)、活动主持人,对多端阅读是有些需求的,平时习惯墨水平板、手机和笔记本电脑登录着有道云笔记。其实本人对内容比较重视,对有道云笔记提供的什么AI服务、PDF转Word等功能是没…

【python】进阶--->网络编程(二)

一、分层模型 OSI/RM(开放系统互联参考模型) 是由国际标准化组织提出来的一种网络互联模型,成为所有的销售商都能实现的开放网络模型.(OSI模型提供我们理解网络协议的内部运作) OSI模型将网络通信工作分为7层,每一层为上一层服务,并为上一层提供一个访问的接口或者界面. 越下…

用Minikube 搭建一个单机k8s玩玩

Minikube 介绍 Minikube是一款单机搭建和管理Kubernetes集群的工具。与Kind 类似,但是个人认为比Kind 好用 Minikube 安装 mac如果安装了 Homebrew,直接执行以下命令安装minikube brew install minikubemac没有安装Homebrew,需要到官网下载选择系统配置…

【Prometheus|报错】Out of bounds

【背景】进入Prometheus地址的9090端口,pushgateway(0/1)error : out of bounds 【排查分析】 1、out of bounds报错,是由于Prometheus向tsdb存数据出错,与最新存数据的时间序列有问题,有可能当前时间与最…

VGGNet

目录 一、VGGNet介绍 1、VGG块 2、VGG架构 3、LeNet, AlexNet和VGGNet对比 4、总结 二、代码实现 1、定义VGG卷积块 2、VGG网络 3、训练模型 4、总结 一、VGGNet介绍 VGGNet(Visual Geometry Group Network)是一种深度卷积神经网络,…

Android Studio 安装和使用

前些天,打开了几年前的一个Android Studio app项目,使用安卓虚拟机仿真app崩溃,怀疑是不是中间升级过Android Studio导致异常的,马上脑子一热卸载了,结果上次踩过的坑,一个没少又踩一次,谨以此文…

系列十二(面试)、Java中的GC回收类型有哪些?

一、Java中的GC回收类型 1.1、概述 Java中的GC回收类型主要包含以下几种,即:UseSerialGC、UseParallelGC、UseConcMarkSweepGC、UseParNewGC、UseParallelOldGC、UseG1GC。 1.2、源码

Linux:sudo给予账户特定的权限

我们某些用户权限比较低,如果我们他们的权限提高,或者假如搞权限的组,那么会大大减少安全性,我们可以使用sudo对他们开放指定的命令 我这里有 a1—3 3个用户,现在我切换到a1执行一下重启的命令 发现我们这个用户并无…

【vtkWidgetRepresentation】第十六期 vtkContourRepresentation(三)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享vtkContourLineInterpolator接口的源码剖析和实例应用,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录 前言 …