首页 > 数据库 > Oracle > select查询之二:分组与排序
Select语句的总结构:
Select [字段] [限制条件]
from [数据表] /子查询[嵌套查询]
where [筛选条件] /子查询[嵌套查询]
group by[分组字段] /子查询[嵌套查询]
Having [辅助筛选条件] /子查询[嵌套查询]
order by[排序字段];
Group by一般情况下与一些聚合函数(统计函数)max、min、count与avg等搭配使用,
有时也搭配having字句使用,having字句一般放在Group by后面。having指明分组结果
的条件,不能单独使用,一般与Group by一起使用。Group by可以单独使用having单独是相对where功能。
1、Group by字句语having字句并用:
在HR用户,查询employees表,要求:大于5人的job_id的最大薪金,最小薪金,人数。
select max(salary),min(salary),count(job_id)
2 from employees
3 group by job_id
4 having count(job_id)>5;
MAX(SALARY) MIN(SALARY) COUNT(JOB_ID)
----------- ----------- -------------
4200 2500 20
11500 6100 30
3600 2100 20
2、Group by字句单独使用:
统计emp中每个部门的工资总和及每个部门的人数
SQL> select sum(sal),count(empno)
2 from emp
3 group by deptno;
SUM(SAL) COUNT(EMPNO)
---------- ------------
9400 6
10875 5
8750 3
3、Order by字句:
Order by字句起到排序作用,可以按照升序ASC排列查询出来的数据,
或者降序DESC排默认情况排序是升序。
查看emp表的所有信息:
SQL> select empno,ename,sal,deptno
2 from emp
3 order by deptno;
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
7782 CLARK 2450 10
7839 KING 5000 10
7934 MILLER 1300 10
7566 JONES 2975 20
7902 FORD 3000 20
7876 ADAMS 1100 20
7369 SMITH 800 20
7788 SCOTT 3000 20
7521 WARD 1250 30
7844 TURNER 1500 30
7499 ALLEN 1600 30
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
7900 JAMES 950 30
7698 BLAKE 2850 30
7654 MARTIN 1250 30
14 rows selected.
4、可以多个字段排序:
SQL> select grade,cno
2 from sc
3 order by cno desc,grade desc;
GRADE CNO
---------- ----------
99 3
93 3
93 3
85 3
92 2
92 2
88 2
75 2
91 1
88 1
80 1
65 1
12 rows selected.
5、 Order by字句中使用字段代号:
查看部门号为30的员工信息,并按照工资从高到低排序:
SQL> select empno,ename,sal,deptno
2 from emp
3 where deptno =30
4 order by 3 desc;
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
7698 BLAKE 2850 30
7499 ALLEN 1600 30
7844 TURNER 1500 30
7521 WARD 1250 30
7654 MARTIN 1250 30
7900 JAMES 950 30
6 rows selected.
从以上的一些操作,可以看到,order by有时候也起到分组的作用,
只是他的分组功能没有聚合作用,就是不能跟聚合函数(统计函数)
搭配使用。排序时,排序的字段可以用代号代替使用,如以上的order by 3 desc.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2125908/ ,如需转载,请注明出处,否则将追究法律责任。