第三章 SQL高级查询_查询存在分数的学员的信息(使用exists )-程序员宅基地

                                  SQL高级查询

章节目标

  • 嵌套子查询
  • 聚合技术
  • 排序函数
  • 公式表表达式

内容

子查询

作为查询条件使用     where

--1.子查询作为条件

--查询学号在王五前边的同学
select * from StuInfo where stuid < (select stuid from StuInfo where stuname='王五')

在条件查询中使用‘<’ '>' '='后家的查询语句只能查一列



作为临时表使用         from

--子查询3:stuinfo、StuMarks都作为子查询

select stuname,subject,score from 
(select * from stuinfo where stuname = '李四') s1,
(select * from stumarks where score > 80) s2
where s1.stuid = s2.stuid

作为列使用                select

--3.子查询作为列使用

--查询所有学员html成绩,没有成绩以null显示
select s.*,
(select score from StuMarks where subject='html' and  s.stuid=StuMarks.stuid) as '成绩' 
from StuInfo s

 嵌套子查询

in  和 not  in

in 和 not in 通常在where 子句中使用,在in和not in后接的子查询中,可以有多个值出现,但必须只能有一列

--not..in 对in取反,不符合in后面所有条件都能够查询出来
--查询学号除了1和3的以外的学员信息
select * from stuinfo where stuid not in (1,3)
--in 符合in后面所有条件都能够查询出来,一系列确定的值或表中的某一列
-查询学号为1和3的学员信息
		
select * from stuinfo where stuid in (1,3)

exists  和 not exists

--EXISTS 和 NOT..EXISTS 后必须跟子查询,表示存在和不存在的意思。

--查询存在分数的学员的信息
SELECT * FROM StuInfo WHERE EXISTS (SELECT * FROM StuMarks WHERE StuMarks.StuID = StuInfo.StuID)

--查询没有成绩的学员的信息
SELECT * FROM StuInfo WHERE not EXISTS (SELECT * FROM StuMarks WHERE StuMarks.StuID = StuInfo.StuID)

same  any   all

--SOME、 ANY、 ALL后必须跟子查询

--SOME 和 ANY 的作用是一样的,表示其中的任何一项 
select * from StuInfo where stuid > any(select stuid from StuInfo where stuid>1)
select * from StuInfo where stuid > some(select stuid from StuInfo where stuid>1)

--all表示其中的所有的项
select * from StuInfo where stuid > all(select stuid from StuInfo where stuid>1)

compute  聚合技术

	--对信息进行查询并统计
	select * from StuMarks  where subject='html' 
	compute max(score),min(score),avg(score)

	--对信息进行分组查询并统计
	select * from StuMarks order by stuid desc
	compute avg(score),sum(score) by stuid

排 序 函 数

语法:排序函数 over([分组子句] 排序语句[DESC]/[ASC] )   

  1.  ROW_NUMBER()函数生成的排序根据排序子句给出递增连续序号(1234)
  2. RANK()有并列且跳号(1134)
  3. DENSE_RANK并列且不跳号(1223)

分租子句                      PARTITION    BY  分组列 分组列

排序子句                      ORDER    BY  排序列  排序列

                                         有聚合函数记得后面加   GROUP   BY

--row_number()	行号
select row_number() over(order by score desc) as '排名',
StuInfo.stuid,stuname,score from StuInfo,StuMarks
where StuInfo.stuid=StuMarks.stuid  and StuMarks.subject='java'

--rank()  存在并列时跳空
select rank() over(order by score desc) as '排名',
StuInfo.stuid,stuname,stusex,score from StuInfo,StuMarks
where StuInfo.stuid=StuMarks.stuid  and StuMarks.subject='java'

--dense_rank()  存在并列时不跳空
select dense_rank() over(order by score desc) as '排名',
StuInfo.stuid,stuname,stusex,score from StuInfo,StuMarks
where StuInfo.stuid = StuMarks.stuid  and StuMarks.subject='java'

		
--partition by 分组子句
select dense_rank() over(partition by subject order by score desc)as '排名',
StuInfo.stuid,stuname,subject,score from StuInfo,StuMarks
where StuInfo.stuid=StuMarks.stuid 

临时表   公式表

除了聚合函数记得后面加 GROUP BY

	--在一个批中建立一个临时表,保存所有学生的SQL成绩
	--可以用别名,但要与查询结果列一一对应(学号,姓名,成绩)
	WITH StuInfo_StuMarks (StuID, StuName, Score)
	AS
	(
		SELECT S1.StuID, S1.StuName, S2.Score 
		FROM StuInfo S1, StuMarks S2
		WHERE S1.StuID=S2.StuID and subject = 'SQL'
	)
	select * from StuInfo_StuMarks
	go

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43124956/article/details/82707112

智能推荐

Generalizable-BEV-程序员宅基地

文章浏览阅读331次,点赞10次,收藏8次。此外,测试了其他BEV检测方法,在没有特殊设计的情况下,它们的泛化性能非常差。这篇论文尝试利用Nerf的思路来提高BEV的泛化能力,同时可以利用有标签的源域数据和无标签的目标域数据。通过结合来自不同视点的信息,多摄像头3D目标检测可以提供更准确和鲁棒的目标检测结果,特别是在某些视点的目标可能被遮挡或部分可见的情况下。然后通过相机的内外参数就可以在这个Volume采样成为一个2D的特征图,然后这个2D特征图和相机内外参数送到一个RenderNet里面来预测对应视角的heatmap和物体的属性。whaosoft

js map()方法 详解与使用_new map()条件渲染按钮 js-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏9次。javascript也有map和set数据类型。 与javaHashMap()类似Js map()方法 set()存值. get();取值1.industryMap.set(“key”,”value”);添加值,2.industryMap.get(“value”);//获取值var industryMap = new Map();//新建 一个mapVar ind..._new map()条件渲染按钮 js

ssm 智慧仓储数据分析系统--65052 (免费领源码、附论文)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案-程序员宅基地

文章浏览阅读91次。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。智慧仓储数据分析系统使用Java语言,采用基于 MVC模式的SSM技术进行开发,使用 Eclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的MySQL数据库来作为数据存储媒介,配合前台HTML+CSS 技术完成系统的开发。

JavaScript 判断 NaN 的方法 (类型判断)_js判断nan数据类型-程序员宅基地

文章浏览阅读3.6k次。1. window.isNaN()(1) window.isNaN(NaN) // true(2) window.isNaN(123) // false注意: window.isNaN 只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而..._js判断nan数据类型

python监视文件夹下文件更新_使用Python监视指定目录下文件变更的方法-程序员宅基地

文章浏览阅读1.2k次。# -*- coding: utf-8 -*-# @Author: xiaodong# @Date: just hide# @Last Modified by: xiaodong# @Last Modified time: just hideimport osimport globimport jsonimport datetimefrom typing import Iterable"""监视指..._python下载文件判断是否更新

35款 SpringBoot/SpringCloud 开源项目,用来接私活挣钱真爽!-程序员宅基地

文章浏览阅读327次。简介SpringBoot 是一个非常流行的 Java 框架,它可以帮助开发者快速构建应用程序。他不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。最近,小编蹲点各大开源网站、社区等,终于被我找到了35款基于 SpringBoot/ SpringCloud 技术体系的一些开源框架。这些项目大都具备一些很完善的功能,并且均采用了当下..._java api商业管理系统

随便推点

Swift之NSOperation及其和GCD的区别_swiftui nsoperationqueue gcd-程序员宅基地

文章浏览阅读1k次。NSOperation GCD swift_swiftui nsoperationqueue gcd

趋势科技修复已遭利用的Apex One 0day漏洞-程序员宅基地

文章浏览阅读254次。聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士趋势科技修复了 Apex One 端点防护解决方案中已遭利用的一个 RCE 0day 漏洞。Apex One 是一款端点安全解决方案,适用于各种规模的企业,它的“无忧业务安全”套件旨在服务中小型企业。该任意代码执行漏洞的编号是CVE-2023-41179,CVSS v3评分为9.1,严重性为“严重”级别。该漏洞存在于与该安全软件提供的第三方卸载模..._trend micro apex one

JAVA面试题分享三百八十九:连接池获取连接慢的所有原因_连接池写入速度太慢-程序员宅基地

文章浏览阅读945次,点赞29次,收藏20次。应用连接数据库基本上都是通过连接池去连接,比如常用的 HikariCP、Druid 等,在应用运行期间经常会出现获取连接很慢的场景,大多数同学都是一头雾水,不知道从哪下手。而且很多时候都是偶发场景,让人头疼不已,别着急,本文带你逐步剖析获取连接慢的所有可能的原因,以及对应的调优手段,让你成为连接池排障大师。_连接池写入速度太慢

shell中$*的用法_shell $*-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏26次。title: shell中$*的用法一、Shell脚本中$0、$?、$!、$$、$*、$#、$@等用法$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)$! Shell最后运行的后台Process的PID(后台运行的最后一个进程的[进程ID]$? 最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)$$ 显示shell使用的当前选项,与set命令功能相同$*._shell $*

关于STM32 PWM输出详解——想要分享的小白_void tim3_pwm_init(u16 arr,u16 psc){ gpio_inittype-程序员宅基地

文章浏览阅读2.7k次,点赞6次,收藏22次。本次博客主要参考STM32战舰例程。脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制 。在本文中,小白将向大家介绍如何用通用定时器通道来输出PWM。定时器的工作过程如下图所示,在上一次博客“STM通用定时器详解”中,小白已经介绍了关于时基单元,并完成了对通用定时器的配置以及定时器中断的使用。如果没有对定时器知识小伙伴,可以先去看一下小白的上一次博客。**PWM工作过程**在PWM 输出中,输出信号由TIMx_ARR寄存器确定频率、由TIMx__void tim3_pwm_init(u16 arr,u16 psc){ gpio_inittypedef gpio_initstructure; t

一文看懂arm架构和x86架构有什么区别_arm架构和x86架构区别-程序员宅基地

文章浏览阅读10w+次,点赞97次,收藏669次。本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能、扩展能力、操作系统的兼容性、软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了arm架构和x86架构的区别,具体的跟随小编一起来了解一下.什么叫arm架构ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachin..._arm架构和x86架构区别

推荐文章

热门文章

相关标签