SQL语言基础(3)

GROUP BY子句
指定查询结果的分组条件
语法:GROUP BY [ALL] group_by_expression_r_r [,n]
      [WITH{CUBE|ROLLUP}]
group_by_expression_r_r指明分组条件,通常是一个列名,但不能是列的别名。

ALL返回所有查询结果的组合。如果没有满足where子句的数据则由NULL值构成数据。ALL的选项不能与cube或rollup选项同时使用。
cube:除了返回由GROUP BY指定的列外,还返回按组统计的行。返回结果先按第一个条件列排序显示,再按第二个条件列排序显示,以此类推。统计列包括了各种组合的数据统计。
rollup:对GROUP BY中列的顺序敏感,只返回第一个分组条件指定的列的统计行,改变列的顺序会使返回的结果的行数发生变化。
注意使用group by子句时后面的变量要和select后相一致,没有包含在聚合函数中的变量都应该作为group by后的变量。


HAVING 子句指定分组搜索条件。通常和group by一起使用
HAVING子句和WHERE很相似,但WHERE子句作用于表和视图,HAVING子句作用于组。
SELECT DEPT_ID,COUNT(*)
FROM EMPLYEE
WHERE E_WAGE>=6000
GROUP BY DEPT_ID
HAVING COUNT(*)>1;其中COUNT(*)表示满足条件的元素个数。

 

ORDER BY子句,指定查询结果的排序方式,默认升序ASC降序DESC
查询工资最高的三名员工
select top 3 e_name,e_wage
from employee
order by e_wage desc;

 

compute子句:在查询结尾的末尾生成一个汇总数据行。
compute{{AVG|COUNT|MAX|MIN|SUM} (expression_r_r [...,n]) [by expression_r_r[...,n]]}这些函数会忽略NULL值,并且DISTINCT选项不能在此使用。
expression_r_r必须包含在select的选项里,并且不能使用别名。
by expression_r_r在查询结果中生成分类统计的行,如果使用,必须使用order by子句,expression_r_r对应order by子句的一部分或全集。
如:select 员工姓名,所属部门,工资
    from 员工数据表
    order by 所属部门
    compute sum(工资) by 所属部门
结果会出现在每个所属部门分组后有一个计算sum的行

聚合函数:AVG,SUM,MIN,MAX,COUNT
COUNT(*)计算表中的行数,一样的都计算上。COUNT(DISTINCT)计算不同的行数
汇总函数忽略NULL值。

 

以上几个子句中数据类型不能为text,ntext,image或bit类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值