SQL之分组函数

分组函数

代码作用
AVG函数返回数值列的平均值。NULL 值不包括在计算中
COUNT返回表中记录总数,适用于任意数据类型
MAX函数返回一列中的最大值。NULL 值不包括在计算中
MIN返回函数一列中的最小值 NULL 值不包括在计算中
SUM函数返回数值列的总数(总额)
STDDEV返回expr的样本标准偏差,它可以作用于聚集和分析函数

举例:
salary 工资 英文懂的就当做没看到 这个只是针对于不懂英文的

select avg(salary),max(salary),min(salary),sum(salary) from employees;
        //平均          最大     最小        总和
select avg(salary) from employees group by teacher  //查询老师平均工资
--(有员工的城市)各城市的平均工资
select city,avg(salary)from employes e,despment d,location l,
where e.despment_id=d.despment_id and d.location_id=l.location_id
group by city
--查询平均工资高于8000的部门id和它的平均工资
select department_id,avg(salary) from employes
having avg(salary)>8000 
group by department_id
--查询最高工资高于8000的部门id和它的平均工资
select department_id,max(salary) from employes
having max(salary)>8000 
group by department_id

以此类推

SQL中,分组函数(也称为聚合函数)用于对查询结果的数据进行汇总计算,通常与`GROUP BY`子句一起使用。它们的位置通常是: 1. **SELECT 子句**: 这是SQL查询的核心部分,其中包含了要应用分组函数的列。例如: ```sql SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 这里,`COUNT(*)`就是一个分组函数,它会对指定列按组计数。 2. **子查询语句(括号内)**: 分组函数也可以出现在嵌套查询的`SELECT`部分,如: ```sql (SELECT column_name, AVG(sales) FROM sales_data WHERE year = 2022) GROUP BY column_name; ``` 3. **GROUP BY 子句**: 这是分组函数的关键,用来告诉数据库如何对数据进行分组。例如: ```sql SELECT column1, SUM(column2) FROM table GROUP BY column1; ``` 这会按`column1`的值对`column2`的总和进行分组。 4. **HAVING 子句**: 如果有进一步的过滤条件,可以在`HAVING`子句中使用分组函数,类似于`WHERE`但针对已分组的结果集,例如: ```sql SELECT column1, AVG(column2) FROM table GROUP BY column1 HAVING AVG(column2) > 100; ``` 只显示平均值大于100的组。 5. **ORDER BY 子句**: 虽然`ORDER BY`不直接与分组函数关联,但它可以应用于分组后的结果,比如对分组后的结果进行排序: ```sql SELECT column1, AVG(column2) FROM table GROUP BY column1 ORDER BY AVG(column2) DESC; ``` 按`column2`的平均值降序排列。 请注意,如果未明确指定`GROUP BY`,大部分聚合函数会默认返回所有行的一个值(通常是整个表的总计),这被称为未分组(UNGROUPED)的聚合。[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值