• 【2017-03-12】SQL Sever 子查询、聚合函数


    一、子查询

    把一条查询语句,当做值来使用
    子句的查询结果必须是一列
    子句可以返回多行数据,但必须是一列

    select * from 表名 where 列名 =,>,<(select * from 表名 where 列名...)

     

    in/not in

    列名 in(值,值,值)表示取值在后面提供的值以内,相当于 列名=值 or 列名=值 or 列名=值

    例:select * from car where oil=7.4 or oil=8 or oil=8.3 与 select *from car where oil in (7.4,8,8.3) 执行结果一模一样

    列名 not in(值,值,值)表示取值都不在后面提供的值以内,相当于 列名!=值 and 列名!=值 and 列名!=值

    例: select * from car where oil not in (7.4,8,8.3)    与 select *from cat where oil !=7.4 and oil !=8 and oil !=8.3

    between and     

    值 between a and b 相当于 值>=a and 值<=b,表示介于a,b两者之间并且包括两者的值

    any

    值>any (a,b,c)   即取值大于a,b,c3个数之的最小值

    值<any (a,b,c)   即取值小于a,b,c3个数之的最大值

    all

    值>all (a,b,c)     即取值大于a,b,c3个数中的最大值

    值<all (a,b,c)     即取值小于a,b,c3个数中的最小值

    *查询两个不同表中的两列数据

    通过子查询和两个表中相同的一列建立联系

    例:查询所有学生的Sname、Cno和Degree列。

    select (select Sname from Student where Student.Sno=Score.Sno),Cno,Degree from Score

    --其中Sname在Student表中,Cno和Degree在Score表中,其中两个表有Student.Sno=Score.Sno的连接

    --用数据多的表做为主表来查询,其中Score为主表

    二、聚合函数

    1.max(最大值),min(最小值)

    2.avg 平均值

    3.count 计行数

     

    4.sum 求和

    *使用聚合函数查询出来的数据没有列名,可以通过在聚合函数后加 as 名称  添加列名

    分组查询并计数升降序排列

    select 列名,count(*) from 表名 group by 列名 order by count(*) asc/desc

    分组查询并计数筛选    分组之后再筛选需用having替换where

    select 列名,count(*) from 表名 group by 列名 having count(*) >,<,= 值

  • 相关阅读:
    linux中使用nfs共享文件
    kNN处理iris数据集-使用交叉验证方法确定最优 k 值
    概念学习-候选消除算法
    OCaml相关
    vmare连接远程服务器的问题
    unresolved external symbol boost::throw_exception
    记录C/C++中遇到的一些小问题
    Linux下修改IP、DNS、路由命令行设置
    VS调试IDAPython脚本
    Linux下mysql5.7数据库root登录的问题
  • 原文地址:https://www.cnblogs.com/snow22546/p/6542099.html
Copyright © 2020-2023  润新知