目录
一、分组统计函数:group by 、having
group by:对列进行分组
语法:select 列1,列2... from 表名 group by 列名
having:对分组后的结果进行过滤(先分组再过滤)
语法:select 列1,列2... from 表名 group by 列名 having ...
eg:
#分组统计
#创建员工表
create table emp (empno int ,empname varchar(20),job varchar(30),sal double,deptno int)
insert into emp values (1234,'abby','manager',20000,001),(2345,'bella','saler',10000,002),(3456,'cindy','clerk',15000,003),(4567,'doli','manager',18000,001)
select * from emp
#显示每个部门的平均工资和最低工资
select deptno,avg(sal),min(sal) from emp group by deptno
#显示每个部门每种岗位的平均工资和最低工资
select deptno,job,avg(sal),min(sal) from emp group by deptno,job
#显示平均工资低于15000的部门号和它的平均工资
select deptno,avg(sal) from emp group by deptno having avg(sal)<15000
二、字符串函数
函数 | 备注 |
charset(str) | 返回字符串字符集 |
concat(string【...】) | 连接字符串 |
instr(string,substring) | 返回substring在string中出现的位置,若无返回0 |
ucase(stirng) | 转换成大写 |
lcase(string) | 转换成小写 |
left/right(string,len) | 从string中左/右起取len个父字符 |
length(string) | string长度 |
replace(str,search_str,replace_str) | 在str用replace_str替换search_str |
strcmp(string1,string2) | 逐字符比较两字符串大小 |
substring(str,position,len) | 从string的position开始(从1开始计算)取len个字符 |
ltrim/rtrim(string) | 去除左/右空格 |
trim(string) | 去除前后空格 |
三、数学函数
函数 | 备注 |
abs(num) | 绝对值 |
bin(decimal,num) | 十进制转二进制 |
ceilign(num) | 向上取整,得到比num大的整数 |
conv(num,from_base,to_base) | 进制转换 |
floor(num) | 向下取整,得到比num小的整数 |
format(num,decimal_places) | 保留小数位数 |
hex(decimal num) | 转十六进制 |
least(num1,num2) | 求最小值 |
mod(num,denomirator) | 求余 |
rand([seed]) | 随机数,范围为【0,1】 rand():每次返回不同的随机数 rand(X):每次返回随机数,若X不变,该随机数不变 |