MySQL函数2

database

聚合函数(只有一个结果)

聚合函数的介绍

  • 聚合函数的常用类型(都不含空值)

AVG()

SUM()

MAX()

MIN()

COUNT()

AVG()和SUM()

  • AVG:求平均
  • SUM():求和

#求平均工资和工资总和

SELECT AVG(salary),SUM(salary)

FROM employees;

注:不能处理字符串

MAX()和MIN()

  • MAX():求最大
  • MIN():求最小

#求最高工资和最低工资

SELECT AVG(salary),SUM(salary)

FROM employees;

注:可以处理字符串,数值类型,日期时间类型的字段(或变量)

COUNT()

COUNT():计算指定字段在查询结果中出现的个数

SELECT COUNT("*")

FROM employees

注:不包括null

  • 查询表中有多少条记录:

  1. COUNT("*")(推荐)
  2. COUNT(1)(推荐)
  3. COUNT(指定字段),但不一定对(MyISAM存储中效率一样)

  • AVG = SUM COUNT永远成立

GROUP BY(分组)

基本使用

#求各个部门的平均工资

SELECT department_id,AVG(salary)

FROM employees

GROUP BY department_id;

使用 多个列分组

#求各个部门同一工种的平均工资

SELECT department_id,job_id,AVG(salary)

FROM employees

GROUP BY department_id,job_id;#没有先后之分

  • 非组函数的字段必须声明在GROUP BY中

  • GROUP BY在FROM和WHERE的后面,在ORDER BY和LIMIT的后面

GROUP BY中使用WITH ROLLUP

会多出一行(在最后),是总的平均值

不能用ORDER BY 排序

#求各个部门的平均工资

SELECT department_id,AVG(salary)

FROM employees

GROUP BY department_id WITH ROLLUP;

HAVING的使用(过滤数据)

  • 过滤条件有聚合函数,必须用HAVING来替换
  • 过滤条件没有聚合函数,推荐用WHERE
  • HAVING必须声明在GROUP BY的后面
  • 使用HAVING的前提是使用了GROUP BY

基本使用

#查部门id是10,20,30,40四个部门最高工资超过10000的部门信息

方式一:推荐(效率高)

SELECT department_id,sum(salary)

FROM employees

WHERE department——id IN(10,20,30,40)

GROUP BY department_id

HAVING sum(salary) > 10000;

方式二:

SELECT department_id,sum(salary)

FROM employees

GROUP BY department_id

HAVING sum(salary) > 10000 and department——id IN(10,20,30,40);

WHERE和HAVING的比较

  • 适用范围:HARING适用范围更广
  • 没有聚合函数:WHERE效率高于HARING

SELECT的执行过程

查询结构

#SQL92

SELECT...,...(存在组函数)

FROM ...,...

WHERE 多表的连接 AND 不包含聚合函数的过滤条件

GROUP BY...,...

HARING BY包含聚合函数的过滤条件

ORDER BY...,...(ASC DESC)

LIMIT...,...

#SQL99

SELECT...,...(存在组函数)#2

FROM ... (LEFT RIGHT)JOIN ...#1

ON多表的连接条件

(LEFT RIGHT)JOIN ...

ON 多表的连接条件

WHERE 不包含聚合函数的过滤条件

GROUP BY...,...

HARING BY包含聚合函数的过滤条件

ORDER BY...,..(ASC DESC)#3

LIMIT...,...

SELECT执行顺序(执行每一步都会有一个虚拟表)

FROM->ON->(LEFT RIGHT JOIN)->WHERE->GROUP BY->HAVING->SELECT->DISTINCT->ORDER BY->LIMIT

SQL执行原理

同上

以上是 MySQL函数2 的全部内容, 来源链接: utcz.com/z/536327.html

回到顶部