永发信息网

如何理解sql语句的分组概念?

答案:1  悬赏:40  手机版
解决时间 2021-07-18 04:51
group by分组列表,having分组查询条件,该如何理解分组?O(∩_∩)O~
最佳答案

在介绍group by 和having子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如sum、count、max、 avg等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

Sql代码

  1. select sum(population) from bbc
select sum(population) from bbc

  这里的sum作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。

  通过使用group by子句,可以让sum 和count这些函数对属于一组的数据起作用。当你指定group by region 时,属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 sum、count等聚合函数运算后返回一个值。

having子句可以让我们筛选成组后的各组数据,where子句在聚合前先筛选记录.也就是说作用在group by子句和having子句前.
而having子句在聚合后对组记录进行筛选。

  让我们还是通过具体的实例来理解group by和having子句,还采用第三节介绍的bbc表。

  SQL实例:
  一、显示每个地区的总人口数和总面积:

Sql代码

  1. select region,sum(population),sum(area) from bbc group by region
select region,sum(population),sum(area) from bbc group by region


  先以region把返回记录分成多个组,这就是group by的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。

  二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

Sql代码

  1. select region,sum(population),sum(area) from bbc group by region having sum(area)>1000000
select region,sum(population),sum(area) from bbc group by region having sum(area)>1000000


  在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。

  相反,having子句可以让我们筛选成组后的各组数据.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有什么动漫新番好看(10~11月的)?
DNF开悬空图的任务在哪里?
《海派甜心》里的全部歌曲在那里可以下载
老师说偷菜是很无聊的事?
我读高一十七岁174的个子,长的挺漂亮(不是
谁又当当网抵押卷
怎样才能进入投资银行工作?有什么条件?
凤凰传奇的《自由飞翔》出于什么时候?
送男生生日禮物送什麽比較好吖~
电脑开机时显示器不亮
笔记本外接键盘调键位
要怎样才能让她幸福?
开通黄钻用什么方式最省钱!
空间装扮中换模板时老是要我给其他装扮续费,
谁知道爱就宅一起
推荐资讯
本地动感地带卡接外地电话要钱吗
家里暖气问题。
急!急!急!!谁会标志设计、字体设计、VI设
10岁女生手脚冰凉是什么症状?
星空战记礼包送的绿色装备
DNF怎样设置2级密?
谁更适合当木叶未来的火影?
【节日】“欢乐圣诞节”知多少?
现在HP价位5000~6000左右的商务笔记本?有那
Keroro军曹大电影粤语版全套下载
《麦兜响当当》里的莫扎特效应是什么?谁给我
三国赵云传2全攻略与秘籍
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?