Group By 分组汇总

HAVING:给分组设置条件

1、概述

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

GROUP BY 子句放在 WHERE 子句之后,ORDER BY 子句之前。

2、聚合函数

group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:

函数 作用 支持性
sum(列名) 求和     
max(列名) 最大值     
min(列名) 最小值     
avg(列名) 平均值     
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别

3、示例

表结构:

现有数据:

(1)

SELECT * FROM test1 GROUP BY name

以name为关键字,每个name随机搜到了一个

(2)

SELECT name, avg(age) FROM test1 GROUP BY name

avg  : 显示name和age两列,age列取所有满足项的平均值

(3)

SELECT *, avg(age) FROM test1 GROUP BY name

显示了所有列,外加 avg(age)  一列

(4)

SELECT name, sum(age) FROM test1 GROUP BY name

sum : 对age一列求和

(5)

SELECT name, count(age) FROM test1 GROUP BY name

count : 满足添加的数量

(6)

SELECT name, count(age) FROM test1 WHERE age>30 AND age<60 GROUP BY name ORDER BY name desc

注意:GROUP BY 子句介于 WHERE 子句和 ORDER BY 子句 中间。

4、HAVING 用法

现在 Student表有 如下数据

现需求如下: 查找每个老师的学生的平均年龄且平均年齿大于12

不使用 HAVING

SELECT * FROM (SELECT TeacherID, AVG(Age) AS AGE FROM Student GROUP BY TeacherID) WHERE Age > 12

使用HAVING

SELECT TeacherID, AVG(Age) AS AGE FROM Student GROUP BY TeacherID HAVING AVG(Age) > 12

结果如下:

《完》

【SQL】group by 及 having的更多相关文章

  1. SQL GROUP BY 语句

    合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 ...

  2. LINQ TO SQL ——Group by

    原文:LINQ TO SQL --Group by 分组在SQL中应用的十分普遍,在查询,统计时都有可能会用到它.LINQ TO SQL中同样具备group的功能,这篇我来讲下LINQ TO SQL中 ...

  3. SQL-W3School-函数:SQL GROUP BY 语句

    ylbtech-SQL-W3School-函数:SQL GROUP BY 语句 1.返回顶部 1. 合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROU ...

  4. [源码解析] GroupReduce,GroupCombine 和 Flink SQL group by

    [源码解析] GroupReduce,GroupCombine和Flink SQL group by 目录 [源码解析] GroupReduce,GroupCombine和Flink SQL grou ...

  5. SQL GROUP BY 中的TOP N

    一个示例表test(select * from test): id gid    age    username1 1      11     zhangsan2 1      13     zhan ...

  6. sql group by 理解

    order by是对字段进行排序,group by 是对字段进行分类,在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用组函数返回每一个组的汇总信息,另外,可以使用ha ...

  7. SQL group by分组查询(转)

    本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...

  8. C# Linq to SQL — Group by

    需求是需要统计数据库中表某一列的总数量,同时以List的形式返回到UI层. Linq to SQL中的Group by用法如下: IList<Unit.HandleCountClass> ...

  9. Linq to SQL -- Group By、Having和Exists、In、Any、All、Contains

    Group By/Having操作符 适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in ...

  10. SQL GROUP BY对多个字段进行分组

    参考链接:http://stackoverflow.com/questions/2421388/using-group-by-on-multiple-columns 在平时的开发任务中我们经常会用到M ...

随机推荐

  1. Mysql一些常用语句

    1.查询表创建的时间: SELECT CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERETABLE_NAME='TableName'

  2. Oracle(限定查询1)

    3.1.认识限定查询 例如:如果一张表中有100w条数据,一旦执行了“SELECT * FROM 表”语句之后,则将在屏幕上显示表中的全部数据行的记录,这样即不方便浏览,也有可能造成死机的问题出现,所 ...

  3. 数据库锁机制(以MySQL为例)

    选自:https://blog.csdn.net/aluomaidi/article/details/52460844 https://www.zhihu.com/question/51513268/ ...

  4. 力扣(LeetCode)500. 键盘行

    给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例: 输入: ["Hello", "Alaska", "Dad& ...

  5. iOS获取UUID

    转自:<iOS获取设备的唯一标识的方法总结以及最好的方法> 参考:<获取iOS设备唯一标识> 总结一下: 1.代码采用CFUUID+KeyChain的实现方式. 2.CFUUI ...

  6. Codeforces 797B - Odd sum

    B. Odd sum 题目链接:http://codeforces.com/problemset/problem/797/B time limit per test 1 second memory l ...

  7. Mac Anaconda 安装

    下载地址 https://www.anaconda.com/download/#macos 选择对应的python 版本 安装 一路下一步 安装后打开如下 呵呵,此处装完,我的python 环境又从3 ...

  8. ThinkPHP 日志(如何学好一门技术,教学视频和文档的优缺)

    ThinkPHP 日志(如何学好一门技术,教学视频和文档的优缺) 一.总结 一句话总结:教学视频中介绍的只是基础的最常用的使用,那些不常用的那些视频里面都不会介绍,因为需求小,所以还是需要好好去把参考 ...

  9. (转)基于C#的socket编程的TCP异步实现

    一.摘要 本篇博文阐述基于TCP通信协议的异步实现. 二.实验平台 Visual Studio 2010 三.异步通信实现原理及常用方法 3.1 建立连接 在同步模式中,在服务器上使用Accept方法 ...

  10. pandas更换index,column名称

    1)仅换掉index名称 df.index = list 2)调整index时,后面的项目也要跟着调整: df.reindex(list) 注意如果list中出现了df中没有的index,后面的项目会 ...