MySQL之函数(单行函数、分组函数)

##进阶函数
/*
调用语法:select函数名(实参列表);
分组函数和单行函数的区别:
        单行函数:将一个数据进行处理,返回一个值
        分组函数:将虚拟表看做一个组,处理一组数据,返回一个值

常见的分组函数:
    sum(字段):求该字段的所有值的和
    avg(字段):求该字段的平均值
    max(字段):求最大值
    min(字段):求最小值
    count(字段):计算该字段中的非空值的个数
    
特点:

1.分组函数可以搭配筛选条件使用
2.分组函数的参数可以作为字段或者表达式
3.分组函数都忽略null值
4.分组函数都支持的类型:
    max、min、count支持任意类型
    sum、avg仅仅支持数值类型

5.count的使用
count(*)或count(常量值):统计结果集中的行数
count(distinct字段):实现去重后的统计

6.和分组函数一同查询的字段不能是任意字段,可以是group by后面的字段

问题:
查询员工平均工资和员工号
select avg(salary),employee_id from employees

*/

#1.简单的查询

SELECT SUM(salary) 和,AVG(salary) 平均值, MAX(salary)最高工资,MIN(salary) 最低工资,COUNT(salary) 个数
FROM employees;

#添加筛选条件
# 案例:查询有奖金的员工的平均工资

SELECT AVG(salary) 平均工资
FROM employees
WHERE commission_pct IS NOT NULL;

##3.分组函数的参数可以是表达式
##案例2:查询年薪的平均值

SELECT MAX(salary*12*(1+IFNULL(commission_pct)))
FROM employees;

##4.分组函数的参数类型可以是任意类型吗?数值型?字符型?日期行?
/*
sum和avg只支持数值型做参数
max、min、count可以支持任意类型做参数

*/#用于测试

SELECT SUM(last_name),AVG(last_name) FROM employees;

SELECT MAX(last_name),MIN(last_name),COUNT(last_name) FROM employees;

SELECT SUM(hiredate),AVG(hiredate)FROM employees;

SELECT MAX(hiredate),MIN(hirdate),COUNT(hirdate) FROM employees;

##5.分组函数是否都忽略null?
/*
都忽略

*/

SELECT SUM(commission_pct),AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;

SELECT MAX(commission_pct),MIN(commission_pct) FROM employees;

##6.count

/**

count(*):统计结果集中的行数【推荐使用】

count(字段):统计该字段中非空值的个数

count(1):统计结果集合中的行数*/

SELECT COUNT(*) FROM employees WHERE department_id>100;

SELECT COUNT(1) FROM employees WHERE department_id>100;

SELECT COUNT(DISTINCT department_id) FROM employees;

猜你喜欢

转载自blog.csdn.net/yuanmomoya/article/details/81980231
今日推荐