基本SQL语句练习(order by,group by,having)
一、GROUP BY 和ORDER BY
1.使用Order by 进行排序,默认升序ASC,降序则使用DESC;(还可以这样:order by 1表示按第一列排序;order by 2 desc表示按第2列降序排序,order by 3...)
SELECT JOB_ID,SALARY FROM EMPLOYEES ORDER BY JOB_ID;
JOB_ID SALARY
AC_ACCOUNT 8300.00
AC_MGR 12008.00
AD_ASST 4400.00
AD_PRES 24000.00
AD_VP 17000.00
AD_VP 17000.00
FI_ACCOUNT 8200.00
FI_ACCOUNT 9000.00
FI_ACCOUNT 6900.00
FI_ACCOUNT 7700.00
FI_ACCOUNT 7800.00
FI_MGR 12008.00
HR_REP 6500.00
IT_PROG 9000.00
IT_PROG 6000.00
IT_PROG 4200.00
IT_PROG 4800.00
IT_PROG 4800.00
MK_MAN 13000.00
MK_REP 6000.00
PR_REP 10000.00 2.使用GROUP BY子句进行分组
使用GROUP BY子句时必须满足以下条件:
在SELECT 子句的后面只可以有两类表达式:统计函数和进行分组的列名
在SELECT 子句中的列名必须是进行分组的列,除此之处添加其它列名都是错误的,但是GROUP BY子句后面的列名可以不出现在SELECT子句中。
如果使用了WHERE子句,那么所有参加分组计算的数据必须首先满足WHERE子句指定的条件。
在默认情况下,将按照GROUP BY子句指定的分组进列升序排序,如果需要重新排序,可以使用ORDER BY 子句指定新的排序顺序。
SELECT JOB_ID,AVG(SALARY),SUM(SALARY),MAX(SALARY),COUNT(JOB_ID) FROM EMPLOYEES GROUP BY JOB_ID;
JOB_ID AVG(SALARY) SUM(SALARY) MAX(SALARY) COUNT(JOB_ID)
IT_PROG 5760 28800 9000 5
AC_MGR 12008 12008 12008 1
AC_ACCOUNT 8300 8300 8300 1
ST_MAN 7280 36400 8200 5
PU_MAN 11000 11000 11000 1
AD_ASST 4400 4400 4400 1
AD_VP 17000 34000 17000 2
SH_CLERK 3215 64300 4200 20
FI_ACCOUNT 7920 39600 9000 5
FI_MGR 12008 12008 12008 1
PU_CLERK 2780 13900 3100 5
SA_MAN 12200 61000 14000 5
MK_MAN 13000 13000 13000 1
PR_REP 10000 10000 10000 1
AD_PRES 24000 24000 24000 1
SA_REP 8350 250500 11500 30
MK_REP 6000 6000 6000 1
ST_CLERK 2785 55700 3600 20
HR_REP 6500 6500 6500 1 3.
SELECT DEPARTMENT_ID,JOB_ID,AVG(SALARY),SUM(SALARY),MAX(SALARY),COUNT(*) FROM EMPLOYEES GROUP BY DEPARTMENT_ID,JOB_ID;
DEPARTMENT_ID JOB_ID AVG(SALARY) SUM(SALARY) MAX(SALARY) COUNT(*)
110 AC_ACCOUNT 8300 8300 8300 1
90 AD_VP 17000 34000 17000 2
50 ST_CLERK 2785 55700 3600 20
80 SA_REP 8396.55172413793 243500 11500 29
50 ST_MAN 7280 36400 8200 5
80 SA_MAN 12200 61000 14000 5
110 AC_MGR 12008 12008 12008 1
90 AD_PRES 24000 24000 24000 1
60 IT_PROG 5760 28800 9000 5
100 FI_MGR 12008 12008 12008 1
30 PU_CLERK 2780 13900 3100 5
50 SH_CLERK 3215 64300 4200 20
20 MK_MAN 13000 13000 13000 1
100 FI_ACCOUNT 7920 39600 9000 5
SA_REP 7000 7000 7000 1 4.ROLLUP:在最后一行列出统计汇总
SELECT JOB_ID,AVG(SALARY),SUM(SALARY),MAX(SALARY),COUNT(*) FROM EMPLOYEES GROUP BY ROLLUP(JOB_ID);
JOB_ID AVG(SALARY) SUM(SALARY) MAX(SALARY) COUNT(*)
AC_ACCOUNT 8300 8300 8300 1
AC_MGR 12008 12008 12008 1
AD_ASST 4400 4400 4400 1
AD_PRES 24000 24000 24000 1
AD_VP 17000 34000 17000 2
FI_ACCOUNT 7920 39600 9000 5
FI_MGR 12008 12008 12008 1
HR_REP 6500 6500 6500 1
IT_PROG 5760 28800 9000 5
MK_MAN 13000 13000 13000 1
MK_REP 6000 6000 6000 1
PR_REP 10000 10000 10000 1
PU_CLERK 2780 13900 3100 5
PU_MAN 11000 11000 11000 1
SA_MAN 12200 61000 14000 5
SA_REP 8350 250500 11500 30
SH_CLERK 3215 64300 4200 20
ST_CLERK 2785 55700 3600 20
ST_MAN 7280 36400 8200 5
6461.83177570093 691416 24000 107 5.CUBE:在第一行列出统计汇总
SELECT JOB_ID,AVG(SALARY),SUM(SALARY),MAX(SALARY),COUNT(*) FROM EMPLOYEES GROUP BY CUBE(JOB_ID);
JOB_ID AVG(SALARY) SUM(SALARY) MAX(SALARY) COUNT(*)
6461.83177570093 691416 24000 107
AD_VP 17000 34000 17000 2
AC_MGR 12008 12008 12008 1
FI_MGR 12008 12008 12008 1
HR_REP 6500 6500 6500 1
MK_MAN 13000 13000 13000 1
MK_REP 6000 6000 6000 1
PR_REP 10000 10000 10000 1
PU_MAN 11000 11000 11000 1
SA_MAN 12200 61000 14000 5
SA_REP 8350 250500 11500 30
ST_MAN 7280 36400 8200 5
AD_ASST 4400 4400 4400 1
AD_PRES 24000 24000 24000 1
IT_PROG 5760 28800 9000 5
PU_CLERK 2780 13900 3100 5
SH_CLERK 3215 64300 4200 20
ST_CLERK 2785 55700 3600 20
AC_ACCOUNT 8300 8300 8300 1
FI_ACCOUNT 7920 39600 9000 5
二、HAVING子句
HAVING子句通常与GROUP BY子句一起使用,在完成对分组结果集进行统计之后,使用HAVING子句再次对结果集进行筛选。如果不使用GROUP BY子句,HAVING子句功能与WHERE子句一样。HAVING与WHERE的不同之处在于HAVING子句与组相关。如果指定了WHERE子句,而没有指定GROUP BY子句,那么HAVING子句将应用于WHERE子句的输出,并且整个输出被看作是一个组。如果SELECT语句即没有指定WHERE子句,也没有指定GROUP BY子句,那么HAVING子句将应用于FROM子句的输出,并且将其看作是一个组。
在SELECT语句中,首先由FROM子句找到数据表,WHERE子句则接收FROM子句输出的数据,而HAVING子句则接收来自GROUP BY、WHERE或FROM子句的输入。
SELECT JOB_ID,AVG(SALARY),SUM(SALARY),MAX(SALARY),COUNT(*) FROM EMPLOYEES GROUP BY JOB_ID HAVING AVG(SALARY)>10000;
JOB_ID AVG(SALARY) SUM(SALARY) MAX(SALARY) COUNT(*)
AC_MGR 12008 12008 12008 1
PU_MAN 11000 11000 11000 1
AD_VP 17000 34000 17000 2
FI_MGR 12008 12008 12008 1
SA_MAN 12200 61000 14000 5
MK_MAN 13000 13000 13000 1
AD_PRES 24000 24000 24000 1
基本SQL语句练习(order by,group by,having)的更多相关文章
- ysql常用sql语句(12)- group by 分组查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- SQL语句之order by 、group by、having、where
百度知道:1.order by是 按字段进行排序.. 字段后面可跟desc降序..asc升序..默认为升序2.group by是进行分组查询3.having和where都属于条件过滤 区别在于一般ha ...
- 若sql语句中order by指定了多个字段,怎么排序?
举个例子吧: order by id desc,time desc 先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)
- sql语句中order by 多个字段同时排序的应用
order by 后面可以跟多个字段进行排序 用A1代表第一个字段,A2代表第二个字段 一.order by A1 , A2 desc 指的是用A1升序A2降序 二.order by A1 a ...
- sql 语句中 order by 的用法
order by 是用在where条件之后,用来对查询结果进行排序 order by 字段名 asc/desc asc 表示升序(默认为asc,可以省略) desc表示降序 order by 无法用于 ...
- 【MySQL】若sql语句中order by指定了多个字段,则怎么排序?
举个例子吧:order by id desc,time desc先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列) order b ...
- [转]SQL语句:Group By总结
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...
- SQL语句:Group By总结
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的作用是通过一定的规则将一个数据集划分成若干个 ...
- SQL语句之Group By
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...
随机推荐
- ArcMap - 使用python更新列中的值
概述:在外文网上,很多人都问在ArcMap中如何通过SQL修改属性字段的值,我见回答的人都说通过"Field Calculator",貌似不能直接通过SQL语句. 虽然学gis开发 ...
- zepto源码研究 - zepto.js - 6(模板方法)
width height 模板方法 读写width/height ['width', 'height'].forEach(function(dimension){ //将width,hegih ...
- Android_Touch_Test
} } }); } }
- html表格table设置边框
对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 一般我们用表格的时候总会给它个border属性,比如:<table b ...
- VS Code 项目编译
编译运行vs code源码 如果我们想本地运行 vs code 需要安装一些必要的库. 我们需要安装 'Node.JS' . 这里需要注意的是,最低版本要求是'5.1.0'. 还需要安装 'Pytho ...
- DZ 3.2 URL 伪静态配置 教程
原文转自:http://www.zccode.com/thread-682-1-1.html 教程说明: 1 首先需要下载URL重写工具,拷到服务器下面安装即可,这里配置IIS7(x64)伪静态. 工 ...
- PHPCMS v9 在windows2008系统 IIS7 下设置伪静态的方法
安装环境:windows2008+IIS7.0+PHP5+MYSQL5 一.安装phpcms v9程序,设置伪静态.如图: 二.安装IIS7官方Url重写模块 1.先到IIS官方下载模块 下载地址:h ...
- java中值得类型转化
在Java编程过程,基本数据类型(boolean除外)的可以相互转化.其中: (1)低容量小的类型自动转换为容量大的数据类型:数据类型按容量大小排序为: byte,short,char->int ...
- Swift—扩展声明-备
声明扩展的语法格式如下: extension 类型名 { //添加新功能 } 声明扩展的关键字是extension,“类型名”是Swift中已有的类型,包括类.结构体和枚举,但是我们仍然可以扩展整型. ...
- 转:成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
文章来自于:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解 ...