sqlserver中groupby的⽤法
sql server中group by语句的⽤法。
group by 分组
通⽤具有基于表的特定列对数据进⾏分析的能⼒。
可按照在 GROUP BY ⼦句中定义的组对⾏进⾏分组。
以其最简单的形式,组由称为分组列的列组成。
SELECT ⼦句中的列名必须为分组列或列函数。
列函数对于 GROUP BY ⼦句定义的每个组各返回⼀个结果。
下列⽰例产⽣⼀个列出每个部门编号的最⾼薪⽔的结果:
此语句产⽣下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY ⼦句定义的组)⽽不是整个公司的 MAX(SALARY)。将 W
HERE ⼦句与 GROUP BY ⼦句⼀起使⽤分组查询可以在形成组和计算列函数之前具有消除⾮限定⾏的标准 WHERE ⼦句。必须在GROUP BY ⼦句之前指定 WHERE ⼦句。例如:
结果为:
WORKDEPT EDLEVEL MAXIMUM
-------- ------- -----------
D11 17 18270.00
D21 15 27380.00
D21 16 36170.00
D21 17 28760.00
E11 12 15340.00
E21 14 26150.00
注意:
在 SELECT 语句中指定的每个列名也在 GROUP BY ⼦句中提到。未在这两个地⽅提到的列名将产⽣错误。
GROUP BY ⼦句对 WORKDEPT 和 EDLEVEL 的每个唯⼀组合各返回⼀⾏。
在 GROUP BY ⼦句之后使⽤ HAVING ⼦句可应⽤限定条件进⾏分组,以便系统仅对满⾜条件的组返回结果。
为此,在GROUP BY ⼦句后⾯包含⼀个 HAVING ⼦句。
HAVING ⼦句可包含⼀个或多个⽤ AND 和 OR 连接的谓词。
每个谓词将组特性(如 AVG(SALARY))与下列之⼀进⾏⽐较该组的另⼀个特性例如: HAVING AVG(SALARY) > 2 * MIN(SALARY) 常数
groupby分组例如: HAVING AVG(SALARY) > 20000
例如,下列查询寻雇员数超过 4 的部门的最⾼和最低薪⽔:
结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING ⼦句但没有 GROUP BY ⼦句。在此情况下,DB2 将整个表看作⼀个组。因为该表被看作是单个组,所以最多可以有⼀个结果⾏。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何⾏。官⽅讲是按组操作, 或者好理解点就是按类操作.
通过如下的例⼦,加深你的理解。
表如下:
语句:
将返回各种商品的总数量,⽽不管是哪个仓库的..
结果:
西⽠,40
⼤⽶,30
苹果,90

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。