SQL学习笔记--组函数

温故而知新
组函数、group by 与 having
1)组函数:
http://www.w3school.com.cn/sql/sql_functions.asp
W3school 学习工具网站,函数多又全。
2)group by : 分组计算
select sum(sal) from emp group by deptno;
  1°没有斜黑体的状况下,输出结果为 工资 的总和;
  2°有斜黑体的情况下,会根据 deptno 进行分组计算,即是每个部门的 工资 总和。
select sum(sal) , deptno from emp;
*这种语句必须加 group by ,
*首先考虑的是语句需求,这一条语句返回的结果集应该为各个部门的工资总和,如果不加group by,会报:*ORA-00937:不是单组分组函数;
*根本无法运行,那么假设可以运行,我认为结果集应该为:
sum(sal)  deptno
20700    50
20700    40
20700    10
 ···     ···
*很明显跟语句需求又较大的差别,所以为了能够得到正确的结果集,应将语句改为
select sum(sal) , deptno from emp group by deptno;
*结果集为:
这里写图片描述
**来自W3school【select Customer,SUM(OrderPrice) FROM Orders】
**上面的 select 语句指定了两列 ( Customer 和 SUM(OrderPrice) )。
**”SUM(OrderPrice)” 返回一个单独的值 (“OrderPrice”) 的总计,而 “Customer” 返回6个值,因此得不到正确的结果。
3)having:
对分组函数进行条件限制的时候,不能用where,只能用having
select sal,count(sal) from emp where sal>2000 group by sal;
select sal,count(sal) from emp having sal>2000 group by sal;
select sal,count(sal) from emp having count(sal)>1 group by sal;
三条语句都是正确的,但是where后面不能够跟分组函数。
4)行列转换:
坑先挖好。。。
需向高人请教。。。
望大牛中牛小牛看到能够指点迷津。。。

*注:理解 group by 的分组的含义之后,很多数据库操作的问题都能够轻易的解决一下,还是要去想,sql 语句上面的每一个操作符到底是怎么操作数据和显示数据的,原理还是很重要。至少解决了我很多之前根本不会解决的 sql 问题;

注释:*为不确定自我见解,有错误请毫不留情直接指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值