牛客网SQL训练3—SQL必知必会

news2024/9/24 21:17:08

文章目录

  • 一、检索数据
  • 二、排序检索数据
  • 三、过滤数据
  • 四、高级数据过滤
  • 五、用通配符进行过滤
  • 六、创建计算字段
  • 七、使用函数处理数据
  • 八、汇总数据
  • 九、分组数据
  • 十、使用子查询
  • 十一、联结表
  • 十二、创建高级联结
  • 十三、组合查询


一、检索数据

题目1:从 Customers 表中检索所有的 ID】
在这里插入图片描述

select cust_id from Customers;

在这里插入图片描述

题目2:检索并列出已订购产品的清单】
在这里插入图片描述

select 
	prod_id 
from OrderItems
group by prod_id
;

在这里插入图片描述

题目3:检索所有列】
在这里插入图片描述

select * from Customers;

在这里插入图片描述

二、排序检索数据

题目1:检索顾客名称并且排序】
在这里插入图片描述

select 
	cust_name 
from Customers
order by cust_name desc
;

在这里插入图片描述


题目2:对顾客ID和日期排序】
在这里插入图片描述

select 
	cust_id
	,order_num
from Orders
order by cust_id asc,order_date desc
;

在这里插入图片描述


题目3:按照数量和价格排序】
在这里插入图片描述

select
	quantity
	,item_price
from OrderItems
order by quantity desc,item_price desc
;

在这里插入图片描述


题目4:检查SQL语句】
在这里插入图片描述

#-- 修改前
SELECT vend_name, 
FROM Vendors 
ORDER vend_name DESC;

#-- 修改后
SELECT vend_name
FROM Vendors 
ORDER BY vend_name DESC;

在这里插入图片描述

三、过滤数据

题目1:返回固定价格的产品】
在这里插入图片描述

select 
	prod_id
	,prod_name
from Products
where prod_price='9.49'
;

在这里插入图片描述

题目2:返回更高价格的产品】
在这里插入图片描述

select 
	prod_id
	,prod_name
from Products
where prod_price>='9'
;

在这里插入图片描述

题目3:返回产品并且按照价格排序】
在这里插入图片描述

select 
	prod_name
	,prod_price
from Products
where prod_price between '3' and '6'
order by prod_price
;

在这里插入图片描述

题目4:返回更多的产品】
在这里插入图片描述

select 
	order_num
from OrderItems
group by order_num 
having sum(quantity)>=100
;

在这里插入图片描述

四、高级数据过滤

题目1:检索供应商名称】
在这里插入图片描述

select 
	vend_name
from Vendors
where vend_country='USA' and vend_state='CA'
;

在这里插入图片描述

题目2:检索并列出已订购产品的清单】
在这里插入图片描述

select 
	order_num
	,prod_id
	,quantity
from OrderItems
where prod_id in ('BR01','BR02','BR03')
and quantity>100
;

在这里插入图片描述

题目3:返回所有价格在 3美元到 6美元之间的产品的名称和价格】
在这里插入图片描述

select
	prod_name
	,prod_price
from Products
where prod_price between 3 and 6
order by prod_price
;

在这里插入图片描述


题目4:纠错2】
在这里插入图片描述

#-- 修改前
SELECT vend_name 
FROM Vendors 
ORDER BY vend_name 
WHERE vend_country = 'USA' AND vend_state = 'CA';

#-- 修改后
SELECT vend_name 
FROM Vendors 
WHERE vend_country = 'USA' AND vend_state = 'CA'
ORDER BY vend_name;

在这里插入图片描述


五、用通配符进行过滤

题目1:检索产品名称和描述 (一)】
在这里插入图片描述

select 
	prod_name
	,prod_desc
from Products
where prod_desc like '%toy%'
;

在这里插入图片描述


题目2:检索产品名称和描述(二)】
在这里插入图片描述

select 
	prod_name
	,prod_desc
from Products
where prod_desc not like '%toy%'
order by prod_name
;

在这里插入图片描述

题目3:检索产品名称和描述(三)】
在这里插入图片描述

select 
	prod_name
	,prod_desc
from Products
where prod_desc like '%toy%' and prod_desc like '%carrots%' 
;

在这里插入图片描述


题目4:检索产品名称和描述 (四)】
在这里插入图片描述

select 
	prod_name
	,prod_desc
from Products
where prod_desc like '%toy%carrots%'  
;

在这里插入图片描述


六、创建计算字段

题目1:别名】
在这里插入图片描述

select 
	vend_id
	,vend_name 		vname
	,vend_address  	vaddress	
	,vend_city      vcity
from Vendors
order by vend_name
;

在这里插入图片描述

题目2:打折】
在这里插入图片描述

select 
	prod_id	
	,prod_price
	,prod_price*0.9 sale_price
from Products
;

在这里插入图片描述

七、使用函数处理数据

题目1:顾客登录名】
在这里插入图片描述

select
	cust_id	
	,cust_name	
	,upper(concat(substr(cust_contact,1,2),substr(cust_city,1,3))) user_login
from Customers
;

在这里插入图片描述


题目2:返回2020年1月的所有订单的订单号和订单日期】
在这里插入图片描述

select
	order_num	
	,order_date
from Orders
where substr(order_date,1,7)='2020-01'
order by order_date
;

在这里插入图片描述

八、汇总数据

题目1:确定已售出产品的总数】
在这里插入图片描述

select 
	sum(quantity) items_ordered
from OrderItems
;

在这里插入图片描述

题目2:确定已售出产品项 BRO1 的总数】
在这里插入图片描述

select 
	sum(quantity) items_ordered
from OrderItems
where prod_id='BR01'
;

在这里插入图片描述


题目3:确定Products表中价格不超过10美元的最贵产品的价格】
在这里插入图片描述

select 
	max(prod_price) max_price
from Products
where prod_price<=10
;

在这里插入图片描述


九、分组数据

题目1:返回每个订单号各有多少行数】
在这里插入图片描述

select 
	order_num
	,count(order_num) order_lines
from OrderItems
group by order_num
order by order_lines
;

在这里插入图片描述

题目2:每个供应商成本最低的产品】
在这里插入图片描述

select
	vend_id
	,min(prod_price) cheapest_item
from Products
group by vend_id
order by cheapest_item
;

在这里插入图片描述

题目3:确定最佳顾客】
在这里插入图片描述

select 
	order_num
from OrderItems
group by order_num
having sum(quantity)>=100
order by order_num
;

在这里插入图片描述

题目4:确定最佳顾客的另一种方式 (一)】
在这里插入图片描述

select 
	order_num
	,sum(item_price*quantity) total_price
from OrderItems
group by order_num
having sum(item_price*quantity)>=1000
order by order_num
;

在这里插入图片描述


题目5:纠错3】
在这里插入图片描述

#-- 修改前
SELECT order_num, COUNT(*) AS items 
FROM OrderItems 
GROUP BY items 
HAVING COUNT(*) >= 3 
ORDER BY items, order_num;

#-- 修改后
SELECT order_num, COUNT(*) AS items 
FROM OrderItems 
GROUP BY order_num 
HAVING COUNT(*) >= 3 
ORDER BY items, order_num;

在这里插入图片描述


十、使用子查询

题目1:返回购买价格为10美元或以上产品的顾客列表】
在这里插入图片描述

select 
	cust_id
from Orders
where order_num in (
						select 
							order_num
						from OrderItems
						where item_price>=10
					)
;

在这里插入图片描述


题目2:确定哪些订单购买了 prod id 为 BRO1 的产品 (一)】
在这里插入图片描述

select 
	cust_id	
	,order_date
from Orders
where order_num in (
						select 
							order_num
						from OrderItems
						where prod_id='BR01'
					)
order by order_date
;

在这里插入图片描述


题目3:返回购买 prod id 为 BRO1 的产品的所有顾客的电子邮件 (一)】
在这里插入图片描述

select 
	cust_email
from Customers
where cust_id in (
					select 
						cust_id
					from Orders
					where order_num in (
											select 
												order_num
											from OrderItems
											where prod_id='BR01'
									    )
				  )
;

在这里插入图片描述


题目4:返回每个顾客不同订单的总金额】
在这里插入图片描述

select 
	a.cust_id
	,sum(item_price*quantity) total_ordered
from Orders a 
left join OrderItems b 
on a.order_num=b.order_num
group by a.cust_id
order by total_ordered desc
;

在这里插入图片描述


题目5:从 Products 表中检索所有的产品名称以及对应的销售总数】
在这里插入图片描述

select 
	prod_name	
	,sum(quantity) quant_sold
from Products a 
left join OrderItems b 
on a.prod_id=b.prod_id
group by prod_name
;

在这里插入图片描述


十一、联结表

题目1:返回顾客名称和相关订单号】
在这里插入图片描述

select 
	cust_name	
	,order_num
from Customers a
join Orders b 
on a.cust_id=b.cust_id
order by cust_name,order_num
;

在这里插入图片描述


题目2:返回顾客名称和相关订单号以及每个订单的总价】
在这里插入图片描述

select 
	cust_name	
	,b.order_num	
	,sum(quantity*item_price) OrderTotal
from Customers a 
join Orders b on a.cust_id=b.cust_id
join OrderItems c on b.order_num=c.order_num
group by cust_name,b.order_num	
order by cust_name,b.order_num
;

在这里插入图片描述

题目3:确定哪些订单购买了 prod id 为 BRO1 的产品 (二)】
在这里插入图片描述

select
	cust_id	
	,order_date
from Orders
where order_num in (
						select 
							order_num
						from OrderItems
						where prod_id='BR01'
					)
order by order_date
;

在这里插入图片描述


题目4:返回购买 prod id 为 BRO1 的产品的所有顾客的电子邮件 (二)】
在这里插入图片描述

select 
	cust_email
from OrderItems a
join Orders b on a.order_num=b.order_num
join Customers c on b.cust_id=c.cust_id
where a.prod_id='BR01'
;

在这里插入图片描述


题目5:确定最佳顾客的另一种方式 (二)】
在这里插入图片描述

select 
	cust_name
	,sum(item_price*quantity) total_price
from Customers a 
join Orders b on a.cust_id=b.cust_id
join OrderItems c on b.order_num=c.order_num
group by cust_name
having sum(item_price*quantity)>1000
order by total_price
;

在这里插入图片描述


十二、创建高级联结

题目1:检索每个顾客的名称和所有的订单号 (一)】
在这里插入图片描述

select 
	cust_name	
	,order_num
from Orders a 
join Customers b on a.cust_id=b.cust_id
order by cust_name
;

在这里插入图片描述


题目2:检索每个顾客的名称和所有的订单号 (二)】
在这里插入图片描述

select 
	cust_name	
	,order_num
from Customers a 
left join Orders b on a.cust_id=b.cust_id
order by cust_name
;

在这里插入图片描述


题目3:返回产品名称和与之相关的订单号】
在这里插入图片描述

select 
	prod_name	
	,order_num
from Products a 
left join OrderItems b on a.prod_id=b.prod_id
order by prod_name
;

在这里插入图片描述


题目4:返回产品名称和每一项产品的总订单数】
在这里插入图片描述

select 
	prod_name	
	,count(order_num) order_num
from Products a 
left join OrderItems b on a.prod_id=b.prod_id
group by prod_name
order by prod_name
;

在这里插入图片描述


题目5:列出供应商及其可供产品的数量】
在这里插入图片描述

select 
	a.vend_id	
	,count(prod_id) prod_id
from Vendors a 
left join Products b on a.vend_id=b.vend_id
group by a.vend_id
order by a.vend_id
;

在这里插入图片描述

十三、组合查询

题目1:将两个 SELECT 语结合起来 (一)】
在这里插入图片描述

select 
	prod_id	
	,quantity
from OrderItems
where quantity=100
union all
select 
	prod_id	
	,quantity
from OrderItems
where prod_id like 'BNBG%'
order by prod_id
;

在这里插入图片描述


题目2:将两个 SELECT 语结合起来 (二)】
在这里插入图片描述

select 
	prod_id	
	,quantity
from OrderItems
where quantity=100 or prod_id like 'BNBG%'
;

在这里插入图片描述


题目3:组合 Products 表中的产品名称和 Customers 表中的顾客名称】
在这里插入图片描述

select 
	prod_name prod_name
from Products
union all
select 
	cust_name prod_name
from Customers
order by prod_name
;

在这里插入图片描述

题目4:纠错4】
在这里插入图片描述

#-- 修改前
SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'MI' 
ORDER BY cust_name; 
UNION 
SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'IL'ORDER BY cust_name;

#-- 修改后
SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'MI' 
UNION 
SELECT cust_name, cust_contact, cust_email 
FROM Customers 
WHERE cust_state = 'IL'
ORDER BY cust_name;

在这里插入图片描述


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

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

相关文章

常见的Linux基本指令

目录 什么是Linux&#xff1f; Xshell如何远程控制云服务器 Xshell远程连接云服务器 Linux基本指令 用户管理指令 pwd指令 touch指令 mkdir指令 ls指令 cd指令 rm指令 man命令 cp指令 mv指令 cat指令 head指令 ​编辑 tail指令 ​编辑echo指令 find命令 gr…

【教程】Autojs脚本实现暂停和超时重启功能的思路和示例代码

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 autojs本身不支持暂停脚本&#xff0c;现有网上大部分最直接的做法就是在每条语句后面添加检查是否暂停。当脚本功能和代码量非常打的时候&#xff0c;每一条语句后面都加检测&#xff0c;未免不太现实。…

【SpringBoot】Starter的使用与案例讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《SpringBoot》。&#x1f3af;&#x1f3af; &…

Linux主机自动注册NPS客户端(脚本化)

参考官方对API使用方法的定义&#xff1a;https://ehang-io.github.io/nps/#/ 1、首先必须要在配置文件中开启 auth_key 并配置一个合适的密钥 2、修改脚本中的可变量参数&#xff0c;以适配自己的环境 #!/bin/bash # 脚本使用说明&#xff1a;# 脚本名称&#xff1a;npc_cr…

I Doc View在线文档预览系统cms.json存在RCE漏洞

文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 i Doc View是一个在线文档解析应用&#xff0c;旨在提供便捷的文件查看和编辑服务。 漏洞概述 iDocView是一个在线文档I Doc View在线文档预览系统cmd.json 处存在命令执行漏洞&#xff0c;攻击者可通过此漏洞获…

【产品经理】需求池和版本树

在这个人人都是产品经理的时代&#xff0c;每位入行的产品人进阶速度与到达高度各有不同。本文作者结合自身三年产品行业的经历&#xff0c;根据案例拆解产品行业的极简研发过程、需求池、版本树、产品自我优化等相关具体方法论。 一、产品研发的极简过程 1. 产品概述 产品就…

第二证券:股票买卖五档什么意思?

股票生意五档是股票生意中的一个常见术语。它是指股票生意盘中最上面的五个报价。股票生意盘是股票商场上的生意报价汇总&#xff0c;其间卖盘代表了其时商场中卖方的报价&#xff0c;买盘代表了其时商场中买方的报价。 股票生意五档通常是指股票生意盘中最上面的五个报价&…

AR眼镜光学方案_AR眼镜整机硬件定制

增强现实(Augmented Reality&#xff0c;AR)技术通过将计算机生成的虚拟物体或其他信息叠加到真实世界中&#xff0c;实现对现实的增强。AR眼镜作为实现AR技术的重要设备&#xff0c;具备虚实结合、实时交互的特点。为了实现透视效果&#xff0c;AR眼镜需要同时显示真实的外部世…

差分法详解

前言 差分算法适用于一些需要对数组和序列进行增减、查询和更新操作的问题&#xff0c;可以提高计算效率和降低存储空间的需求。今天我将带大家学习如何使用差分法&#xff0c;会以例题来带大家使用差分法以增进理解。话不多说让我们开始吧&#xff01; 文章目录 一维差分尾声…

3D Web轻量引擎HOOPS Communicator如何实现对大模型的渲染支持?

除了读取轻松外&#xff0c;HOOPS Communicator对超大模型的支持效果也非常好&#xff0c;它可以支持30GB的包含70万个零件和3.5亿个三角面的Catia装配模型&#xff01; 那么它是如何来实现对大模型的支持呢&#xff1f; 我们将从以下几个方面与大家分享&#xff1a;最低帧率…

算法的时间复杂度是什么?

算法的时间复杂度是什么&#xff1f; 时间复杂度的概念 时间复杂度是用来估算出程序的运行时间的。我们通常会估计算法的操作单元数量&#xff0c;来代表程序消耗的时间。 随着数据规模n的增大&#xff0c;算法执行时间的增长率和f(n)的增长率相同&#xff0c;称作算法的渐近…

线性回归在数据库中的应用

简介 今天看到微信群有人问&#xff0c;如何知道数据库一年的磁盘增量&#xff1f;如果没有研究过统计学&#xff0c;IT人员对于这个问题就只能靠经验了去断定了。没经验的往往都是回复扩容越大越好。当然未来的事情我们是无法预料的。本博主就通过简单的线性回归做一个计算&am…

12. IO

1.File类 • File 类代表与平台无关的文件和目录。 • File 能新建、删除、重命名文件和目录&#xff0c;但 File 不能访问文件内容本身。如果需要访问文件内容本身&#xff0c;则需要使用输入/输出流。 1).File的常用方法 在这里插入图片描述 2).遍历给定目录所有文件 …

QT-坦克大战游戏

QT-坦克大战游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "score.h" Score::Score(){health30; maxHealthhealth;QLabel *label1 new QLabel(this);label1->setFrameStyle(QFrame::Plain | QFrame::Box);label1->setStyle…

SpringCloud面试题——Sentinel

一&#xff1a;什么是Sentinel&#xff1f; Sentinel是一个面向分布式架构的轻量级服务保护框架&#xff0c;实现服务降级、服务熔断、服务限流等功能 二&#xff1a;什么是服务降级&#xff1f; 比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备…

干货|你必须要知道的机器视觉常识!

Part.1 机器视觉是什么 机器视觉是一种能够模拟人类视觉系统的技术&#xff0c;是计算机的“慧眼”&#xff0c;能够使计算机理解和解释图像或视频中的信息。 机器视觉包括图像处理、机械工程技术、控制、电光源照明、光学成像、传感器、模拟与数字视频技术、计算机软硬件技术…

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中&#xff0c;经常会…

C++ Qt开发:ProgressBar进度条组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。…

SpringBoot配置mysql加密之Druid方式

一、导入Druid依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version> </dependency>二、生成密文 方式1. 找到存放druid jar包的目录 1-1、在目录…

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时&#xff0c;EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码&#xff1a; 这些参数再何时设置的哪&#xff1f; 在easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的…