SQL之GROUP BY & HAVING


聚合函数

From CSDN 叶子

一、Sql Server 中有哪些聚合函数?

提到聚合函数大家一定会首先想到最常用的:
1、 求个数:count
2、 求总和:sum
3、 求最大值:max
4、 求最小值:min
5、 求平均值:avg

聚合函数中有四个函数是我一直以来几乎就没有用到过的:
1、 求方差:var
2、 求总体方差:varp
3、 标准偏差:stdev
4、 求总体标准偏差:stdevp

除此以外Sql Server中还有几个集合函数:
1、 求校验和:checksum_agg
2、 求个数:count_big
3、 用于测试 cube 或 rollup 空值:grouping

二、聚合函数在什么情况下使用?

聚合函数只能在以下位置作为表达式使用:
1、 select 语句的选择列表(子查询或外部查询)。
2、 compute 或 compute by 子句。
3、having 子句。

三、聚合函数count和count_big的区别?

count_big的用法与count 函数类似。两个函数唯一的差别是它们的返回值。 
count_big始终返回 bigint 数据类型值。count始终返回 int 数据类型值。


GROUP BY

From cnblogs Myhsg / CSDN 王晓斌 / cnblogs 夕诺

GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用

  • group by语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。

  • group by 作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组各返回一个结果。

  • group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

  • group by子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更细致的控制;

  • 如果在group by子句中嵌套了分组,数据将在最后规定的分组上进行汇总;

  • group by子句中列出的每个列都必须是检索列或有效的表达式。如果在select中使用表达式,则必须在group by子句中指定相同的表达式,不能使用别名;

  • 大多数SQL实现不允许group by列带有长度可变的数据类型;

  • 除聚集计算语句外,select语句中的每个列都必须在group by子句中给出;

  • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组;

  • group by子句必须出现在where子句之后,order by子句之前;

  • group by all语法解析:
    如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。
    没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。

HAVING

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚集函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

  • where过滤行,而having过滤分组。having支持所有where操作符,having子句中能使用聚集函数。where在数据分组前进行过滤。having在数据分组后进行过滤。where排除的行不包括在分组中。
  • having 子句被限制子已经在select语句中定义的列和聚合表达式上。通常,你需要通过在having子句中重复聚合函数表达式来引用聚合值,就如你在select语句中做的那样。例如:
    SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2
  • 需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:

1.执行where子句查找符合条件的数据;
2.使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
3.having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
4.having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
5.having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,535评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,106评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,668评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,863评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,874评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,362评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,748评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,717评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,249评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,280评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,408评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,020评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,727评论 3 337
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,191评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,320评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,946评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,473评论 2 365

推荐阅读更多精彩内容