sql 查询(分组查询)

分组查询函数


顺序总结 select from join on (where) groupby having orderby

group by

SELECT * FROM studetail;
group by stusex  根据性别进行分组
count() 统计个数
SELECT stusex, count(stusex) FROM studetail group by stusex ;

根据年龄进行分组统计个数
SELECT  stuage,count(*) FROM studetail group by stuage ;
(*)这里代表的是goupby 后面的stuage

根据性别进行分组求平均年龄
SELECT  stusex,avg(stuage)  FROM studetail group by stusex ;

根据性别分组  求最大值  / min  求最小年龄   
SELECT  stusex,max(stuage)  FROM studetail group by stusex ;


sum  求年龄的总和
SELECT  stusex,sum(stuage)  FROM studetail group by stusex ;

#HAVING  
条件的意思 与where差不多
SELECT * FROM studetail WHERE stuage >18;

分组后 还有其他条件  
根据性别进行分组 ,求分组后的平均年龄,获取平均年龄大于18岁的信息
SELECT  stusex,avg(stuage)  FROM studetail group by stusex HAVING avg(stuage) = 18;

根据工作岗位进行分组,求每一个组的平均工资,筛选平均工资大于5000的
SELECT job_position,avg(salary),count(*) FROM emp group by job_position HAVING avg(salary) > 5000 ;
SELECT sum(salary) FROM emp ;
SELECT avg(salary) FROM emp ;
SELECT max(salary) FROM emp ;

HAVING
根据工作岗位进行分组,求每一个组的平均工资,筛选平均工资大于5000的  从大到小排序
order by   desc  asc
SELECT job_position,avg(salary),count(*) FROM emp
group by job_position
HAVING avg(salary) > 5000
order by avg(salary) desc;

SELECT job_position,avg(salary),count(*) FROM emp
group by job_position
order by avg(salary) desc;

limit 限制行号

SELECT job_position,avg(salary),count(*) FROM emp
group by job_position
HAVING avg(salary) > 5000
order by avg(salary) desc
limit 3;


SELECT id,empname,salary FROM emp order by salary desc;

SELECT id,empname,salary FROM emp order by salary desc limit 3;

IFNULL

WITH ROLLUP 分组之后进行job_position求和IFNULL job_position
SELECT ifnull(job_position,"部门总和"),count(job_position) FROM emp
group by job_position  WITH ROLLUP;

SELECT deptid FROM students;
SELECT IFNULL(deptid,"1011") FROM students;

DISTINCT 去重

SELECT DISTINCT empname FROM emp;

left 截取

SELECT   left(salary,4) FROM emp;
SELECT   right(salary,3) FROM emp;
SELECT   substring(salary,1,4) FROM emp;  # 取第一个到第四个

CONCAT

SELECT CONCAT(salary,empname) as namesalry FROM emp;

SELECT NOW(); # 查询当前时间

SELECT * FROM department;
+-----+--------------------+
| did | dname |
+-----+--------------------+
| 102 | 上海交通大学 |
| 103 | 浙江大学 |
| 101 | 清华大学 |
| 105 | 理工学院 |
+-----+--------------------+
SELECT * FROM department join students on ;

+-----+---------+--------+
| sid | sname | deptid |
+-----+---------+--------+
| 1 | 张三 | 101 |
| 2 | 李四 | 102 |
| 3 | 王五 | 103 |
| 4 | 赵六 | 101 |
| 5 | 孙琪 | 102 |
| 6 | 小花 | 103 |
| 8 | 小测 | 105 |
| 9 | c俄式 | NULL |
+-----+---------+--------+

索引

建立约束的时候 会创建索引

show keys from students;
索引  书籍目录
id 

模糊查询

like _一个字符 % 任意给字符

SELECT empname from emp WHERE  empname like "_花";
SELECT empname from emp WHERE  empname like "%花%";
posted @ 2024-10-06 19:33  自由的心|勇敢的心  阅读(15)  评论(0编辑  收藏  举报