说到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经典排序算法

    https://www.cnblogs.com/onepixel/p/7674659.html这个文章很nice https://www.bilibili.com/video/av685670?fro ...

  2. ava StringTokenizer 类使用方法

    菜鸟教程 -- 学的不仅是技术,更是梦想! 首页 笔记首页 Android 互联网 程序员人生 程序员笑话 编程技术 红包 知识店铺 --> 首页 Android 鸡汤 逗乐 Search Ja ...

  3. [read -p应用]插拔光模块去检查port present状态

    #!/bin/bash path="/sys/devices/platform/soc/fd880000.i2c-pld/i2c-0/i2c-4/i2c-15/15-0060" a ...

  4. Caffe2 用户手册概览(Caffe2 Tutorials Overview)[1]

    在开始之前,我们很感激你对Caffe2感兴趣,希望Caffe2在你的机器学习作品中是一个高性能的框架.Caffe2致力于模块化,促进深度学习想法和原型的实现. 选择你的学习路线   1. 使用一个现成 ...

  5. CVPR 2019 行人检测新思路:

    CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破 原创: CV君 我爱计算机视觉 今天 点击我爱计算机视觉置顶或标星,更快获取CVML新技术 今天跟大家分享一篇昨天新出的CVPR 2 ...

  6. centos6.9下 svn 1.7.10版本 编译安装

    svn安装推荐文章: 1.    http://blog.51cto.com/myhat/786950 2.    https://blog.csdn.net/test1280/article/det ...

  7. 39 (guava包)AbstractScheduledService的使用

    package com.da.tool.guava; import com.google.common.util.concurrent.AbstractScheduledService; import ...

  8. SRS源码——Listener

    1. 整理了一下Listener相关的UML类图:

  9. CDQ分治-陌上花开(附典型错误及原因)

    CDQ分治-陌上花开 题目大意 对于给遗传给定的序列: \[ (x,y,z)_1, (x,y,z)_2, (x,y,z)_3, \cdots, (x,y,z)_n \] 求: \[ \sum_{x_i ...

  10. 140、Java内部类之实例化内部类对象

    01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; class ...