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