1、聚合函数
count():满足列条件的总得行数

  • 统计一个班级共有多少学生
    select count(id) from student_score;
    Select count(chinese) from student; // 和上面的结果不同,忽略了null。
    SELECT COUNT(*) FROM student;
  • 统计数学成绩大于90的学生有多少个
    SELECT COUNT(*) FROM student WHERE math>90;
  • 统计总分大于250的人数有多少
    SELECT COUNT() FROM student WHERE (chinese+english+math)>250;

    MySQL查询最小值id对应的数据_聚合函数


    **注意: 除了COUNT(
    )以外,其他字段都会忽略NULL值;**

sum(): 求总和

  • 统计一个班级数学总成绩
    SELECT SUM(math) FROM student;
  • 统计一个班级语文、英语、数学各科的总成绩
    SELECT SUM(chinese),SUM(english),SUM(math) FROM student;
  • 统计一个班级语文、英语、数学的成绩总和
    SELECT SUM(chinese+english+math) FROM student;
  • 统计一个班级语文成绩平均分
    SELECT SUM(chinese)/COUNT(*) FROM student;
    avg(): 求平均数
  • 求数学平均分
    SELECT AVG(math) FROM student;
  • 求一个班级总分平均分
    SELECT AVG(chinese+english+math) FROM student;
    min() 和 max() 求最大值和最小值
  • 求班级数学最高分和最低分
    select max(math),min(math) from student;

group by 分组
GROUP BY子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。
分组的含义是:把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录。分组函数忽略空值。
实践操作:

create table t_order(id int primary key,product varchar(20),price float(8,2));
insert into t_order values(1,'xiaomi', 1000);
insert into t_order values(2,'xiaomi',1100);
insert into t_order values(3,'huawei',2200);
insert into t_order values(4,'apple',8200);

对订单表中商品归类后,显示每一类商品的总价

SELECT product,SUM(price) FROM t_order GROUP BY product;

MySQL查询最小值id对应的数据_MySQL查询最小值id对应的数据_02


查询商品总价格大于3000的商品

SELECT product,SUM(price) FROM t_order GROUP BY product HAVING SUM(price)>3000;

MySQL查询最小值id对应的数据_聚合函数_03


注意:

(1)、分组函数的重要规则

如果使用了分组函数,或者使用GROUP BY 的查询:出现在SELECT列表 中的字段,要么出现在聚合函数里,要么出现在GROUP BY 子句中。

(上面的product出现在了group by中,price出现在了聚合函数中)

GROUP BY 子句的字段可以不出现在SELECT列表当中。(2)、having where 的区别

①、where和having都是用来做条件限定的,

②、WHERE是在分组(group by)前进行条件过滤,

③、HAVING子句是在分组(group by)后进行条件过滤,

④、WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。

⑤、HAVING子句用来对分组后的结果再进行条件过滤

having sum(price)>2000 相当于 拿着 列名为sum(price)去查询。

日期函数

MySQL查询最小值id对应的数据_MySQL查询最小值id对应的数据_04


select CURDATE() from dual;
 select CURTIME() FROM DUAL;
 SELECT NOW() FROM DUAL;

注: dual 是虚拟表,为了凑sql语句的格式;

数值函数

MySQL查询最小值id对应的数据_字段_05


SELECT ABS(-23) FROM DUAL;
 SELECT CEIL(3.13) FROM DUAL;
 SELECT FLOOR(4.87) FROM DUAL;

字符串函数

MySQL查询最小值id对应的数据_分组函数_06


SELECT CONCAT(‘hello’,‘world’) FROM dual;
 select INSERT(‘helloworld’,2,3,‘xxxxxx’) from dual;
 select LOWER(‘HELLO MYSQL’) FROM dual