说到SQL语句,大家最开始想到的就是他的查询语句:

select * from tableName;

这是最简单的一种查询方式,不带有任何的条件。

当然在我们的实际应用中,这条语句也是很常用到的,当然也是最简单的。在考虑到性能的时候,我们一般不这么写!具体怎么写,请关注后续的文章。。。

下面我们着重的看下文章标题所提到的几个子句。

一、Where

在英文中翻译为:在哪里,在什么地方。

在SQL语句中又该如何进行翻译呢?

如下一句:

select * from tableName where id="2012";

就是寻找表tableName中,id=2012的记录。

这里的where对查询的结果进行了筛选。只有满足where子句中条件的记录才会被查询出来。

对于where子句没什么高深的东西,而且也是最常见的东西,大家都太熟了。在这里不进行过多的介绍哈!

二、Group By

group by子句,我们放在select子句中的列必须也要放在group by子句中,除非在select子句中不指定任何列。 这句总感觉有问题?请大牛指点。

我们先看上面的这个表格,假如现在让你找出Apple在China,Japan,USA的平均价格,你怎么办?

我们可以这么做:select avg(price) from tablename where fruitname="apple";

Group By 一般是和一些聚合函数一起使用,比如上面我们用到的求平均的函数avg,还有求和sum,求个数count,求最大max,求最小min and so on.

对于上表,求每种水果的最大的价格:select fruitname,productplace,max(price) from tablename group by fruitname

Group By 还有一个重要的合作对象,他就是having

三、Having

我们用Group By 进行分组后,如何对分组后的结果进行一个筛选呢?having来帮您解决这个难题。

1.首先看一个例子:求平均价格在3.0以上的水果

如果我们使用这个:

select fruitname,avg(price) from tablename where avg(price)>=3.0 group by fruitname ;

这样能否达到我们的要求呢?

答案是否定的,因为where子句不能使用聚合函数。为了解决这个问题,我们来用下我们的杀手锏,他就是Having;

改写如下:select fruitname,avg(price) from tablename group by fruitname having avg(price)>=3.0;

2.我们继续看Having的另外一个匪夷所思

select fruitname,avg(price) from tablename group by fruitname having price<2.0;

这个查询的结果你们觉得会是什么呢?

没错,就是 orange 0.8 ;只有这一条记录

为什么呢?为什么Apple没有被查到呢,因为apple的有的价格超出了2.0.

另外运算符in也可以用在having 子句。

select fruitname,avg(price) from tablename group by fruitname having fruitname in ("orange","apple");

四、Order By

Order By是对查询的结果进行一个再排序的过程,一般放在查询语句的最后,可以是单列,也可以实现多列的排序。

分为升序asc和降序desc,默认的为升序。

Order By单列的排序比较简单,多列的也不麻烦。

select * from tablename group by friutname order by fruitname asc,price desc.

转自:http://blog.csdn.net/qitian0008/article/details/7840845

SQL中的Where,Group By,Order By和Having的更多相关文章

  1. sql中having、group by用法及常用聚合函数

    having是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了. 注意:sele ...

  2. SQL中group by后面的having中不能使用别名

    如下图中,SQL中需要对group by的结果使用having进行过滤,不能使用select中定义的别名,需要使用查询字段的原始名.否则会报错,列明未定义. 下图未错误演示: 修改后,正确的SQL语句 ...

  3. SQL中Group By的使用

    1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...

  4. SQL中Group By 的使用

    1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简 ...

  5. 【转】SQL中Group By的使用

    1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...

  6. MYSQL:SQL中Group By的使用

    SQL中Group By的使用   1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By ...

  7. 转载:SQL中Group By 的常见使用方法

    SQL中Group By 的常见使用方法  转载源:http://www.cnblogs.com/wang-meng/p/5373057.html 前言今天逛java吧看到了一个面试题, 于是有了今天 ...

  8. 用SQL查询方式显示GROUP BY中的TOP解决方法[转]

    用SQL查询方式显示GROUP BY中的TOP怎样用一个SQL语句来显示 分组后每个组的前几位 比如把一个学校所有学生的成绩按班级分组,再显示每个班级前五名的信息. 班级     学生   成绩 一班 ...

  9. SQL 中的group by (转载)

    概述 原始表 简单Group By Group By 和 Order By Group By中Select指定的字段限制 Group By All Group By与聚合函数 Having与Where ...

随机推荐

  1. 学习 Python,怎能不懂点PEP 呢?

    或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...

  2. Java Web 前端资源文件的路径问题

    WEB-INF是Java Web应用的安全目录,在部署时用于存放class文件.项目用到的库(jar包).Java Web应用的配置文件web.xml. 浏览器不能访问此目录下的资源,比如在WEB-I ...

  3. mysql cmmand not found

    https://www.cnblogs.com/yangzigege/p/8337393.html

  4. 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ

    题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&quo ...

  5. Java基础 -4.4

    For循环 for循环也是一种常规的使用结构 public static void main(String[] args) { for(定义循环的初始值;循环判断;修改循环条件) { 循环语句的执行; ...

  6. springcloud gateway nullpointerexception (NettyRoutingFilter)

    最近在做一个下载功能时,发现直接调用服务是可以下载的,但是通过gateway路由下载会报NPE异常,具体如下 java.lang.NullPointerException: null at java. ...

  7. #P1099 树网的核 题解

    题目描述 pdf 题解 这一题,刚开始看题目感觉好像很难,题目又长……一看数据范围,呵呵. 已经给出来这是个DAG,所以不用担心连通性的问题.那么怎么做呢? 朴素的做法是把树的直径的两个端点都统计出来 ...

  8. [经验] SpringBoot 远程连接 Linux 上的 Redis

    开发环境: ---------- springboot 2.X ---------- Linux Ubuntu 18.0.04 关于怎么在 Ubuntu 上安装 Linux , 网上的教程一大堆, 这 ...

  9. Redis的C++与JavaScript访问操作

    上篇简单介绍了Redis及其安装部署,这篇记录一下如何用C++语言和JavaScript语言访问操作Redis 1. Redis的接口访问方式(通用接口或者语言接口) 很多语言都包含Redis支持,R ...

  10. Azure DNS-

    先看什么是DNS,通常来讲,DNS是将域名解析成IP的服务,例如www.azure.cn对应的IP地址是139.217.8.104 使用域名访问有如下好处: 1. 好记,使用特定的字母组合,代替ip地 ...