MySQL 函数

 -- 了解一些基本的函数
-- 绝对值 
select abs(-10)
-- 向上取整
select ceiling(11.1)
-- 向下去整
select floor(11.1)
-- 截取字符
SELECT SUBSTR('sxr lalala  heiheihei' ,1,3)
-- 获取当前时间
select now()
--  获取当前年份
SELECT year(NOW())
-- 聚合函数
-- count() 计数函数 count(*) count (1) ,sum() ,min(),max(),avg().
SELECT count(sname) FROM student
-- 查询每个科目平均分 (如果不使用分组(group by),就只会存在第一行的数据(why?))
select c.cid,cname,avg(score) from sc inner join course c on c.cid =sc.cid;

-- 查询每个科目平均分 
select c.cid,cname,avg(score) from sc inner join course c on c.cid =sc.cid group by c.cid;

-- 情景: 如果此时我想查询平均分科目八十分的科目应该怎么写? 是用where关键字吗?  像下面这样?
select c.cid,cname,avg(score) from sc inner join course c on c.cid =sc.cid where avg(score) >80 group by c.cid; 
-- 如果你运行上面的语句你会发现运行错误  ,答案是使用having  根据规定:在分组完成以后只能使用 having 关键字 设置判断条件;
 -- 正确答案 :
select c.cid,cname,avg(score) from sc inner join course c on c.cid =sc.cid  group by c.cid having avg(score) >80; 



分组以后用having 设置条件,未分组是用where

posted @ 2020-12-19 22:51  margusd  阅读(78)  评论(0)    收藏  举报