GROUP Function

GROUP Function

概念:
所谓组查询即将数据按照某列或者某些列相同的值进行分组,然后对该数组进行组函数运用,针对每一个组返回一个结果。
note:
1.组函数可以出现的位置:select子句和having子句
2.使用group by 将行划分成若干小组
3.having子句用来限制组结果返回。
语法:
select 。。。
from 。。。
where 。。。
group by col_name,col_name
having 。。。
order by 。。。

col_name:即将数据按照colName相同的值进行分组。

组函数常见的五个: distinct取消重复行
avg:求平均值 AVG(DISTINCT | ALL | N)
count:求总数 COUNT(DISTINCT | ALL | expr | *)
max:最大值 MAX(DISTINCT | ALL |expr)
min:最小值 MIN(DISTINCT | ALL | expr)
stddev: 求标准方差 STDDEV(DISTINCT | ALL | n)
sum: 求和 SUM(DISTINCT | ALL | n)
variance: 方差 VARIANCE(DISTINCT | ALL | n)
例:
select AVG(salary),MAX(salary),min(salary),sum (salary)
FROM s_emp
WHERE UPPER(title ) like “SALES%”;
select min(last_name),max(last_name) from s_emp;

avg([distinct] column) / sum ([distinct] column):可以作用在存储数字的列上。
对字符型数据的最大值,是按照首字母有A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼音排列的,若是首字符相同,则比较下一个字符,依次类推。
max(),min():可以作用在任意类型的数据上。
count([distinct] column | *):
count( * ) :统计表中所有行数
count(column):返回所有非空的行数

group by

  1. 用来将表中的行划分成若干更小的组
  2. 出现在select子句中,但是没有出现在组函数中的列必须出现在group by 子句中。
  3. 出现在group by 中的列不一定出现在select 子句中
  4. group by 子句中出现多列时候,表示从左到右进行分组,即先按照第一列分组,然后再第一列分好的组里面在按照第二例进行分组,依次类推。
  5. 限制组结果的返回一定使用having不能使用 where。
  6. group by 子句中的列出现在select中,表意性比较强。
    1.查看各部门,职称相同的人的平均工资
    select dept_id,title, avg(salary) from S_emp group by dept_id,title order by avg(salary);
    2.查看个部门工资总和按照工资降序排序
    select dept_id,sum(salary) s from S_emp group by s desc;
    3.查找部门平均工资>1000的所有部门id和平均工资:
    目标: 部门id 和avg(salary)

条件:部门平均工资
部门平均工资大于1000
select dept_id, avg(salary) from S_emp group by dept_id having avg(salary) >1000;
1查找不以vp开头的所有员工
select last_name, first_name from S_emp where title not like ‘VP%’;
2并且将他们以职称分组
group by title
3,求各个职工的工资总和
sum(salary)
4将工资总和大于五千的职称和工资显示出来
having sum(salary)>5000;

总和:select title ,sum(salary) from s_emp where title not like ‘vp%’ group by title having sum(salary)>5000;

5.查看公司经理的id,并且显示该经理领导下的领取工资最低的员工的工资,不包含那些最低工资低于1000的员工的工资及其经理id,并按工资进行排序

select manger_id ,min(salary) from s_emp
where manger_id is not null
group by manger_id
having min(salary) >1000;

select customer_id ,count(id),sum(total)
from S_ord
group by customer_id;

连接查询
select customer_id ,name,count(S_ord.id),sum(total)
from S_ord ,S_customer
where S_ord.custom_id = S_customer.id
group by customer_id ,name;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值