oracle-group by 用法


group by 的基本用法

有一张表的数据如下:

表名:salary_info

id name salary date
1 zhangsan 5500 2016-4-5
2 lisi 3500 2016-4-5
3 wangwu 6000 2016-4-5
4 lisi 3800 2016-5-5
5 zhangsan 5500 2016-5-5
6 wangwu 6000 2016-5-5
7 zhaoliu 2000 2016-5-5

 

 

 

 

 

 

想要统计每个人今年一共发了多少工资。

sql如下:

示例:
select name , sum(salary) from salary_info where to_char(date,'yyyy') = '2016' group by name;

group by 限制select字段:

示例:
select name , sum(salary) , date from salary_info group by name ;

上面示例就会报错,提示:试图执行的查询中不包含作为合计函数一部分的特定表达式,'date'。

注意:这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。

Having与Where的区别

where语句用于group by 分组之前进行过滤数据。

having语句用于group by 分组之后进行数据筛选。

示例:
select name , sum(salary) from salary_info where to_char(date,'yyyy')='2016' group by name having salary >'10000';

如上示例,查询2016年发的工资大于10000的人的姓名和工资数目。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM