group by 和Having

GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示 A B 1 abc 1 bcd 1 asdfg select A,B from table group by A 你说这样查出来是什么结果, A B abc 1 bcd asdfg 右边3条如何变成一条,所以需要用到聚合函数,比如 select A,count(B) 数量 from table group by A 这样的结果就是 A 数量 1 3 group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

 

 

1.   GROUP后面可以跟多列。
group by 姓名,班级
首先按姓名排序,当姓名相同的时候才按班级排序,比如:

姓名 班级
A     1
B     9
C     11
D     1
D     2
D     3
E     2

注意D的班级顺序和整个姓名排序的方式。 

 

 

 

2.   举个例子:

记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为:   

SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" 
SELECT store_name, SUM(Sales)  FROM Store_Information GROUP BY store_name

在我们的示范上,   

Store_Information 表格

store_nameSalesDate
Los Angeles$1500Jan-05-1999
San Diego$250Jan-07-1999
Los Angeles$300Jan-08-1999
Boston$700Jan-08-1999
我们就打入, SELECT store_name, SUM(Sales)  FROM Store_Information GROUP BY store_name   

结果:   

store_nameSUM(Sales)
Los Angeles$1800
San Diego$250
Boston$700



当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我 们都需要将其放在 GROUP BY 的子句中。

 

 

 

Having 用途:

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name 

HAVING aggregate_function(column_name) operator value指定群组或汇总的搜寻条件。 语法: SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value 解释: HAVING 通常与 GROUP BY 子句同时使用。不使用 GROUP BY 时, HAVING 则与 WHERE 子句功能相似。

例: “Sales” 表中的原始数据 :

 

Company            Amount

W3Schools             5500

IBM                      4500

W3Schools          7100

 

按照 Company 字段进行分组,求出每个 Company 的 Amout 的合计在 10000 以上的数据:

SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000

返回结果 :

 

Company      SUM(Amount)

 W3Schools   12600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值