Maison >base de données >tutoriel mysql >sqlserver 中group by的用法
欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较该组的另一个特性 例如: HAVING AVG(SALARY) 2 * MIN(SALARY) 常数 例如: HAVING AVG(SALARY) 20000 例如,下列查询寻找雇员数超
欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入
每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较该组的另一个特性 例如: HAVING AVG(SALARY) > 2 * MIN(SALARY) 常数
例如: HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
复制代码代码示例: SELECT WORKDEPT, MAX(SALARY)AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4 ORDER BY WORKDEPT
结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。 官方讲是按组操作, 或者好理解点就是按类操作。
通过如下的例子,加深你的理解。
表如下:
复制代码代码示例: ID 名称 仓库 数量
01 西瓜 一号 10
02 西瓜 二号 30
03 大米 一号 30
04 苹果 一号 40
05 苹果 二号 45
06 苹果 三号 5
语句:
复制代码代码示例:Select name,Sun(price) From 表 Group By name
将返回各种商品的总数量,而不管是哪个仓库的
结果:
西瓜,40
大米,30
苹果,90
[1] [2]