首页 > 其他分享 >子查询高级查询以及集合运算统计函数

子查询高级查询以及集合运算统计函数

时间:2023-07-12 11:48:13浏览次数:26  
标签:group 运算 结果 从句 查询 分组 集合 select

子查询
  • 单行子查询 子查询部分的返回结果为单行 的结果

  • 多行子查询 子查询部分的返回结果为多行 的结果,主要关键字有 any , in ,all

    • any 表示任意一个,在集合中有一个满足条件即可

    • all 所有 ,在集合中所有都满足即可

    • in 表示任意一个,在集合中有一个满足条件即可

    eg: select   *  from emp  e where    e.sal<= any (select  sal from emp  where deopno='clerk')
  • 多列子查询 如果子查询返回多列,则对应的条件从句也应该出现多列,这种查询称为多列子查询

     eg:    select   *  from emp  e where    (e.job,e.deopno)=(select  job,deopno from emp where  empno='7788')    
    • rownum 关键字 表示虚列 只能=1只认识第一行,并且只认<= 不能认识>=或者>

      eg 从雇员表中查询6至9位置上的雇员,

      select * from (select rownum row,e.* from emp e  where rownum<=9) f where f.row>=6

高级查询

多表关联查询,条件的匹配进行连接,每个表中相同意义的相连接,,如果不加任何关联查询两个表会出现笛卡尔积(也有人称自然连接),其实就算两个表中的每一行记录都关联起来,总记录未两表想乘。N个表想连接,至少要N-1个条件。

  • 等值连接

  • 不等连接

  • 自连接 表

  • 外连接 主表为空的行也展示出来(左外关联 lef t join ,右外关联 righ jion ,全关联 full join )


集合运算

多个语句的查询结果可以运用与集合运算,结果集的字段类型,数量和顺序应该一致。

操作描述
union 并集,合并两个结果集的结果,去掉重复部分
union all 并集,合并两个结果集的结果,保留重复部分
minus 差集,从前面的结果集中去掉与后面结果集相同的部分
intersect 交集,取两个结果集中重复部分

 


统计函数
函数说明
AVG 求平均值
count 求计量值,返回非空行数,*表示返回所有行
MAX 求最大值
MIN 求最小值
SUM 求和
STDDEV 求标准偏差,是根据差的平方根得到的
VARIANCE 求统计方差
  • -统计函数中,avg和sum只针对数值类型列,MAX,MIN,COUNT还可以运用与字符,数值和日期类型。

使用group by 从句可以对数据进行分组,所谓分组就是可以根据相同内容划分成组,可以对组使用组函数。如果不使用分组,则对整个表应用函数。

在组函数中可以使用distinct 和all关键字。ALL表示对所有非空可重复进行运算(count除外)。distinct 表示对每一个非NULL值,如果存在重复值,则组函数只运算一次。如果不指明上述关键字,默认为ALL。

分组统计

group by 列1,列2,......

  • 分组限定规则 : 在 select 后出现的要么是group by 后的列,要么是分组统计函数。

  • 分组统计结果限定: 对查询的分组结果进行筛选过滤 需要使用having从句,它只能出现在group by 后,。而where从句要出现在group by 之前。

  • 分组统计结果排序: 可以使用order by 从句,该从句要出现在语句最后。注意排序时可以使用别名排序也可以使用前面查询结果的列数来排序 select 列1 ,列2,列3,count(*) 总量 from temp1 group by 列1 ,列2,列3 order by 总量 ; 或者

    select 列1 ,列2,列3,count(*) 总量 from temp1 group by 列1 ,列2,列3 order by 4;

  • 组函数的嵌套: eg : select max(avg(sal)) from emp;

标签:group,运算,结果,从句,查询,分组,集合,select
From: https://www.cnblogs.com/xjianbing/p/17547096.html

相关文章

  • riscv处理器——除法运算实现
    采用试商法实现除法运算,试商法的计算过程如下:1.每次除法运算至少需要33个时钟周期才能完成,用状态机来实现;2.主要需要判断并执行的指令有4种类:1wireop_div=(op_r==`INST_DIV);//有符号除法,结果为商2wireop_divu=(op_r==`INST_DIVU);//无符号除法,结果为商3wire......
  • Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是
    1.jquerygrep()筛选遍历数组(可以得到反转的数组)//1.jquerygrep()筛选遍历数组(可以得到反转的数组)vararray=[1,5,9,3,12,4,48,98,4,75,2,10,11];varfilterArray=$.grep(array,(currentValue)=>{returncurrentValue>10;});console.log(`${filt......
  • DNS查询
    DNS递归解析和迭代解析的区别:递归是用户只向本地DNS服务器发出请求,然后等待肯定或否定答案;而迭代是本地服务器向DNS服务器发出请求,DNS服务器在给出下一级DNS服务器的地址,直至得到最终答案。递归中DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机;......
  • 【ChernoC++笔记】移动赋值运算符
    【90】【ChernoC++】【中字】stdmove与移动赋值操作符▶️移动构造与std::move接上节的String类,我们可以通过string来构造新的对象dest://拷贝构造Stringstring="Hello";Stringdest=string;为了使用移动构造函数,string需要cast为临时变量://移动构造Stringdest=(s......
  • 「Python」参数化查询防止SQL注入攻击
    importpymysql#1.链接mysqlconn=pymysql.connect(user='root',password="123",host='127.0.0.1',database='cars'#需要去数据库创建表,无法在此创建) #2.获取一个游标cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#返回的查询结果以字典的形式表示,其......
  • 第三节 运算符
    1.运算符和表达式运算符:​ 就是对常量或者变量进行操作的符号。​ 比如:+-*/表达式:​ 用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。​ 比如:a+b这个整体就是表达式。​ 而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式。2.算术运......
  • 分组查询时,select的字段是否一定要都在group by中
    分组查询时,select的字段是否一定要都在groupby中?分组查询关键字groupby通常和集合函数(MAX、MIN、COUNT、SUM、AVG)一起使用,它可以对一列或者多列结果集进行分组。例如要统计超市水果的种类,需要用count函数,要统计哪个水果价格最高,要用MAX()函数。一般情况下,我们在使用groupby的......
  • 1141-查询近30天活跃用户数
    查询近30天活跃用户数原文地址:1141.查询近30天活跃用户数-力扣(LeetCode)题目如下所示个人题解这题主要考察MySQL中DATE数据类型的操作和GROUPBY用法。个人思考过程如下所示--1.建表CREATETABLE1141_Activity( user_idINT, session_idINT, activit......
  • 逻辑运算符
     rint(1and5or0)#先计算1and5为5再计算5or0为5print(1or5and0or6and0)"""先计算5and0为0,6and0为0整个语句就变为1or0or0结果为1""" ......
  • mongodb4集合操作
    Mongodb集合操作1.查看当前数据库下所有集合showcollectionsshowtables2.新建集合db.createCollection("product")3.新建集合并插入文档db.girl.insert({"name":"小花","age":"33","address":"chengdu"})4.查看文档内容db.girl.find()5.删除......