zoukankan      html  css  js  c++  java
  • 10-31SQLserver基础--聚合函数、分组

    在查询语句时,也存在一些方法和属性,而这些方法在查询时统称为函数,便利查询时使用

    聚合函数(都是针对字段操作)

    聚合是缩减一系列输入值的表达式,例如缩减为单个值。

    Select*from biao

    1、--求平均分AVG:只能对数字类型的操作,返回一个值(返回非null值的平均值)

    Select AVG(age)from biao--执行后没有列名

    Select AVG(age) as nianing from biao---执行后有列名,加as.

    --放在select...from之间的一定是列名。

    --as(...)里面可以起别名

    --加条件用where:

    例:Select AVG(yuwen) as 语文平均 from biao where banji=‘1班’

    2、--求总数COUNT,只有2种要么count(*),要么(distinct)去重。(返回包含null值和重复值的聚合的大小)

    1)Select COUNT(*) from  biao   count(*)查询表所有

    Select COUNT(*) from biao where name like‘王%’

    2)Select COUNT(distinct banji) from biao

    3、--求最大值MAX  ()+字段(返回非null值的最大值)

    Select MAX(yuwen)as...(+别名) from biao where banji=’1班’

    4、--求最小值MIN()+字段(返回非null值的最小值)

     Select MIN(yuwen)as...(+别名) from biao where banji=’2班’

    5、--求总和SUM(返回非null 值的总和)

    Select SUM(yuwen) from biao

    Select SUM(yuwen) from biao where....

    6、组合使用聚合函数(以上这些聚合函数,都是返回一行一列数值)

    select AVG(age) as 平均年龄,COUNT(*) as 人数 from biao where banji='1班'

    以上5种是常用的聚合函数(重点记忆),聚合函数都包含 all(所有)和distinct(去重),什么都不写,默认是all;

    除此之外,聚合函数还包括COUNT-BIG,CHECKSUM等13种。

    例:

    7、--分组group by(等同于聚合函数里的grouping),针对某一列操作。可以组合上面学的聚合函数

    不同于聚合函数的是,聚合函数只能显示一个值,而分组显示一组值(每一组)。

    select banji from biao group by banji

    --按照要求,先分组再结合聚合函数操作

    select banji AVG(yuwen) from biao group by banji

    --分组也可以加条件where

    Select nianing from biao where nianling>20 group by nianling

    (补充)关系运算符:

    =/!=/

    例:select nianling,COUNT(*)from biao where nianling between 20and 25 group by nianling

         select grade,COUNT(*)from xuesheng where yuwen>60 group by grade 

    8、--having是group by独有的,(只能加聚合函数的选择条件)

    having是针对统计好的结果进行筛选,所以使用having的前提必须使用group by.

     select grade,COUNT(*)from xuesheng where yuwen>60 group by grade having COUNT(*)>9

    执行having的条件顺序:

    1)查询整个表

    2)先看where条件

    3)筛选完再执行group by

    4)再执行前面的聚合函数,针对每组分别操作

    5)最后执行having后面的聚合函数。

    9、group by....order by....

    例:Select banji,COUNT(*)from biao where yuwen>75 group by banji order by COUNT(*) desc

    执行order by条件先后顺序:

    1)查询整个表

    2)先看where条件

    3)筛选完再执行group by

    4)再执行前面的聚合函数,针对每组分别操作

    5)最后执行order by..后面的聚合函数。

    例题:

     select grade,MAX(shuxue)as 数学最高,MIN(shuxue) as 数学最低,MAX(yuwen)as 语文最高,MIN(yuwen) as 语文最低,MAX(yingyu)as 英语最高,MIN(yingyu) as 英语最低 from xuesheng group by grade having MAX(shuxue)>80 order by MAX(shuxue) desc

    数学函数

     1、---绝对值
     select ABS(-7)--是查处结果在结果框中显示


    2、 print abs(-4)--在消息框中显示


     select Code,xingming,sex,nianling,weight,abs(yuwen)as yuwen from xuesheng
     select Code,xingming,sex,nianling,weight,yuwen from xuesheng where ABS(yuwen)>90
     select* from xuesheng where ABS(yuwen)>90


     3、---取上限
     select CEILING(1.1)--ceiling取上限
     select CEILING(shuxue) from xuesheng where (shuxue-CEILING(shuxue))!=0
     select * from xuesheng where CEILING(shuxue)>=90--CEILING在查询语句中的格式


     4、---取下限
     select FLOOR(1.5)
     select FLOOR(shuxue)from xuesheng where Code=2--FLOOR在查询语句中的格式


     5、--次方
     select POWER(3,2)--表示3的2次方等于几就返回几
     select '这是'+xingming+'年龄的平方',POWER(nianling,2)from xuesheng--当只有age的数据类型为字符串的时候
     
     6、---四舍五入
     select ROUND(2.54655,0)--(a,b)a表示将要四舍五入的数,b表示要四舍五入到小数点后的位数
     select shuxe,ROUND(shuxue,0) as shehou from xuesheng--ROUND在查询中的格式
     
     7、--求平方根
     select SQRT(4)


     8、----求平方
     select SQUARE(3)

     

  • 相关阅读:
    Python元类
    Python接口与归一化设计
    如何使用yum下载rpm包
    浅谈Python的with语句
    搞懂了这几点,你就学会了Web编程
    网络虚拟化技术大观
    Python装饰器
    Kubernetes配置Ceph RBD StorageClass
    编译Kubelet二进制文件
    记一次虚拟机无法挂载volume的怪异问题排查
  • 原文地址:https://www.cnblogs.com/xiaoqingshe/p/4064350.html
Copyright © 2011-2022 走看看