zoukankan      html  css  js  c++  java
  • 【2017-03-12】SQL Sever 子查询、聚合函数

    一、子查询

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

    子句返回的值为一个值的时候:

    例如:

    我只知道c026这个编号,我要查询比这个车价格低的全部车辆信息
    select *from car where price<(select price from car where code='c026')   --先执行括号内返回一个值,再执行外边。此时括号内返回的是一个值的时候

    若子句返回的是一列值而不是一个值的时候:

    例如:

    查询油耗与c016相等的或者与c029相等的或者与c014相等的全部汽车信息

    select * from car where oil in(select oil from car where code='c016' or code='c029' or code='c014')

    in的用法:

    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) 执行结果一模一样

    如果想得到油耗除7.4,8,8.3以外的汽车信息: select * from car where oil not in (7.4,8,8.3)

    油耗的7到8之间的车的信息(包括7和8)

    执行结果一样,但第一种更好一些

    any用法: 

    油耗大于任意一个数,即为油耗大于其中的最小值即可。如果是油耗小于任意一个数,则为油耗小于最大值即可。

    all 用法:

    select * from car where oil> all(7.4,8,8.3)

    油耗大于所有,则为油耗大于最大值。若是油耗小于所有,则为油耗小于最小值。

    从多个表中查询返回到一个表中:

    查询所有学生的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为主表

    查询所有学生的Sno、Cname和Degree列。

    select Sno,(select Cname from Course where Course.Cno=Score.Cno),Degree from Score

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

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

    二、聚合函数

    1、max,min:取最大值,最小值

    --查询油耗最小的汽车的信息

    select * from car where oil=(select max(oil) from car)

    2、avg:取平均值

    --查询汽车的平均价格

    其中 as 用来起别名

    3、count:取总个数

    --求一下一共有多少车

     

    即为求一下一共多少行

    4、sum:求和

    --求一下所有车的总价

     

    按油耗进行分组,并看一下每组有多少辆车

    注意:
    --查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
    select AVG(degree) from score where Cno =(select Cno from Score where Cno like '3%' group by Cno having count(*)>=5
    在 group by 后面跟筛选条件的话得用 having 代替 where 

  • 相关阅读:
    [Leetcode]-Palindrome Number
    timesten升级
    C++的for循环细节,必看!
    web desktop在线演示
    定制流程
    西服定制 服装在线定制 GIMIWEAR高级定制
    Roseonly:互联网轻奢品牌之路-搜狐IT
    妊娠纹_百度百科
    ARPU_百度百科
    工商管理硕士(MBA)-北大国际MBA
  • 原文地址:https://www.cnblogs.com/qq609113043/p/6538434.html
Copyright © 2011-2022 走看看