前面感觉真的好乱,想哪,写哪。这里慢慢整理……

SQL Having 语句

  还是前面的那两个表:

   grade表:

  

  student表:

  

  我们需要查找这里的s_id下的gradeValue的和,这就要分组查询了 :select sum(gradeValue) as nums from grade group by s_id

  这里分组查找完毕,但是需要筛选其中gradeValue的和大于100的。怎么筛选。一般都是用 where做子句来筛选,如 where 字段>80;

  但是这里的where关键字无法与聚合函数一起使用,才产生了having

  eg: select sum(gradeValue) as nums from grade group by s_id having nums>100;

  扯到这,提一下聚合函数:  sum(),avg(),count(),max(),min() 等,这些函数呢,都是作用在多条数据上,产生的结果。这里呢就不能用where了。

SQL  where  group  by ,having  区别?

  having子句:

  having 子句和group by 一起使用时,实现结果是先分组,然后在进行条件查找。SQL 语句编写顺序也一个样,having子句必须写在group by

  子句后面。

  where子句:

  where子句和group by 一起使用时,是先执行 where语句的,然后在走分组语句。SQL编写,where必须在group by 前面。

  看看图:

       where +group by

   select s_id ,gradeValue from grade where gradeValue>80 group by s_id

  

  having  +group by

   select s_id ,gradeValue from grade  group by s_id  having gradeValue>80

  

  通过2个图很容易看出,where在分组前就执行,效果没有达到预期,having在分组后,执行选择条件。

SQL学习——基础语句(4)的更多相关文章

  1. SQL学习——基础语句(1)

    简序 1.SQL,指结构化查询语言,全称是 Structured Query Language. 2.SQL 让您可以访问和处理数据库. 3.SQL 是一种 ANSI(American Nationa ...

  2. SQL学习——基础语句(3)

    先上数据表 student表 grade 表 SQL Union 语句 合并两个或多个select查询结果集. select s_id from student union select  s_id ...

  3. SQL 常用基础语句

    1.SQL SELECT 语句 语法:SELECT    列名称    FROM    表名称 2.SQL SELECT DISTINCT 语句 语法:SELECT    DISTINCT    列名 ...

  4. SQL 数据库基础语句

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建备份 ...

  5. sql server 基础语句

    创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...

  6. 9月18日,SQL学习基础1

    数据库管理和应用 Oltp是小型的管理,OLAP是大型的管理 开发的内容如触发器 数据库管理系统(Database Management System,简称为DBMS)是位于用户与操作系统之间的一层数 ...

  7. 经典sql server基础语句不全

    1.几个简单的基本的sql语句 选择: select * from table1 where 范围 插入: insert into table1(field1,field2) values(value ...

  8. SQL SERVER基础语句

    1.增加字段名 ALTER TABLE  [表名] ADD  [列名] VARCHAR(20) NULL VARCHAR(20)是新加字段的类型和长度NUll:表示允许NULL值 3.修改字段类型 A ...

  9. sql 的基础语句

    USE day15; -- 创建表CREATE TABLE teacher( id INT, NAME VARCHAR(20))-- 查看所有表SHOW TABLES; DESC student; D ...

随机推荐

  1. [SOA]REST与SOA两种架构的异同比较

    REST的特性 它基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格.特征如下: 1.网络上的资源都被抽象为资源,这些资源都具有唯一的统一资源标识符(URI:Uniform Reso ...

  2. sqlserver 时间测试

    select * from GropBy where [date] BETWEEN '2010-10' and '2015-10' --从字符串转换日期和/或时间时,转换失败. select * fr ...

  3. C# switch 语句

    switch ("MySql") //选择语句 // case语句 成对 结束 执行到 第一个break { case "SqlServer2000": cas ...

  4. Kafka学习笔记(6)----Kafka使用Producer发送消息

    1. Kafka的Producer 不论将kafka作为什么样的用途,都少不了的向Broker发送数据或接受数据,Producer就是用于向Kafka发送数据.如下: 2. 添加依赖 pom.xml文 ...

  5. 【转】【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    原文地址:http://www.cnblogs.com/baiboy/p/orc8.html   阅读目录 目录 数据库安装 参考文献 相关文章 Oracle 11G RAC数据库安装(八) 概述:写 ...

  6. element table 组件内容换行方案

    element table 组件内容换行方案 white-space的值: normal 默认.空白会被浏览器忽略.pre 空白会被浏览器保留.其行为方式类似 HTML 中的<pre> 标 ...

  7. CenOS 安装python3 与python2共存

    Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...

  8. fun(int **p)的使用

    #include <iostream>using namespace std;void fun(int **p){ cout << p[0][0] << endl; ...

  9. 基于Vue的事件响应式进度条组件

    写在前面 找了很多Vue 进度条组件!,都不包含拖拽和点击事件,input range倒是原生包含input和change事件,但是直接基于input range做进度条的话,样式部分需要做大量调整和 ...

  10. 【CodeForces 271D】Good Substrings

    [链接] 我是链接,点我呀:) [题意] [题解] 字典树 我们可以两重循环(i,j) 来枚举所有的子串 即i=1,j=1,2,3... i=2,j = 2,3,4,.. 于是我们在i变化的时候(就是 ...