您的位置:首页 > 数据库 > MySQL

Mysql group by 详解

2013-08-23 09:59 99 查看
group by

分组

通用数据库具有基于表的特定列对数据进行分析的能力。

可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:

SELECT DEPT, MAX(SALARY) AS MAXIMUM

FROM STAFF

GROUP BY DEPT

此语句产生下列结果:

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)。

将 WHERE 子句与 GROUP BY 子句一起使用

分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:

SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM

FROM EMPLOYEE

WHERE HIREDATE > '1979-01-01'

GROUP BY WORKDEPT, EDLEVEL

ORDER BY WORKDEPT, EDLEVEL
结果为:

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 子句之后使用 H***ING 子句

可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 H***ING 子句。 H***ING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 ***G(SALARY))与下列之一进行比较:

该组的另一个特性

例如:

H***ING ***G(SALARY) > 2 * MIN(SALARY)

常数

例如:

H***ING ***G(SALARY) > 20000

例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:

SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM

FROM EMPLOYEE

GROUP BY WORKDEPT

H***ING COUNT(*) > 4

ORDER BY WORKDEPT

此语句产生下列结果:

WORKDEPT MAXIMUM MINIMUM

-------- ----------- -----------

D11 32250.00 18270.00

D21 36170.00 17250.00

E11 29750.00 15340.00

有可能(虽然很少见)查询有 H***ING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 H***ING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。
官方讲是按组操作,
或者好理解点就是按类操作..
看个例子你就明白了,表如下:
ID 名称 仓库 数量

01 西瓜 一号 10

02 西瓜 二号 30

03 大米 一号 30

04 苹果 一号 40

05 苹果 二号 45

06 苹果 三号 5

Select name,Sun(price) From 表 Group By name

以上SQL将返回各种商品的总数量,而不管是哪个仓库的..
结果:
西瓜,40

大米,30

苹果,90

本文来自 http://blog.csdn.net/huluhulu88/archive/2008/03/13/2179316.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: