使用group by分組
在多行函數中不能直接使用普通字段,除非group by
在多行函數中不能直接使用單行函數,除非group by
group by學習:
---1、使用group by進行數據分組 select 多行函數,分組字段 from 表名 group by 分組字段
---2、多字段進行分組的時候,按照字段順序進行分組,第一條件分組完成后,繼續使用其他條件依次分組。
---3、group by依然可以和order by 聯合使用
---4、可以和單行函數聯合進行分組,注意使用了單行函數那么在查詢語句中必須也要使用
查詢最高工資和員工數
select max(sal),count(*) from emp
查詢不同部門的最高工資
select * from emp order by deptno
select deptno,max(sal) from emp group by deptno--使用group進行分組查詢,分組的字段可以出現在查詢中,其他字段依然不可以
查詢不同工作崗位的員工數
select * from emp for update
select lower(job),count(*) from emp group by lower(job)--使用單行函數進行分組
查詢不同部門的不同工作崗位的人數
select deptno,job ,count(*) from emp group by deptno,job--使用多字段組合進行分組
select deptno,job ,count(*) from emp group by deptno,job order by deptno
查詢不同部門的不同工作崗位的並且人數大於1的信息
select count(*) from emp where count(*)>3 group by deptno
select deptno,job ,count(*) from emp where count(*)>1 group by deptno,job order by deptno
查詢部門號大於10的不同部門的不同工作崗位的人數
select deptno,job ,count(*) from emp where deptno>10 group by deptno,job order by deptno
使用having進行分組后篩選
having學習:
--1、使用group by分組后在進行數據篩選的時候,where中不能出現多行函數,所以使用新的關鍵字having進行條件篩選
--2、where條件篩選的執行順序:from-->where--->group -->select
--3、having條件篩選的執行順序:from-->group by -->having-->select
--4、where的執行效率比having要高,能使用where的情況下盡量不要使用having
查詢不同部門的不同工作崗位的並且人數大於1的信息
使用where語句進行篩選
where條件語句sql執行順序:from-->where--->group -->select
select count(*) from emp where count(*)>1 group by deptno,job
使用having語句進行篩選
having條件語句的執行順序:from-->group by -->having-->select
select deptno, count(*) from emp group by deptno having count(*)>5
select deptno,job ,count(*) from emp group by deptno,job having deptno>10 order by deptno