您现在的位置是:首页
>
sqlserver入门新手教程 SQL入门:分组
SQL入门:分组 I 分组 DB 通用数据库具有基于表的特定列对数据进行分析的能力 可按照在 GROUP BY 子句中定义的组对行进行分组 以其最简单的形式 组由称为分组列的列组成 SE

SQL入门:分组
I 分组 DB 通用数据库具有基于表的特定列对数据进行分析的能力 可按照在 GROUP BY 子句中定义的组对行进行分组 以其最简单的形式 组由称为分组列的列组成 SELECT 子句中的列名必须为分组列或列函数 列函数对于 GROUP BY 子句定义的每个组各返回一个结果 下列示例产生一个列出每个部门编号的最高薪水的结果 SELECT DEPT MAX(SALARY) AS MAXIMUM FROM STAFF GROUP BY DEPT 此语句产生下列结果 注意 计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY) II 将 WHERE 子句与 GROUP BY 子句一起使用 分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句 必须在GROUP BY 子句之前指定 WHERE 子句 例如 SELECT WORKDEPT EDLEVEL MAX(SALARY) AS MAXIMUM FROM EMPLOYEE WHERE HIREDATE > GROUP BY WORKDEPT EDLEVEL ORDER BY WORKDEPT EDLEVEL 结果为 educity cn/img_ / / / jpg > 注意 在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到 未在这两个地方提到的列名将产生错误 GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行 III 在 GROUP BY 子句之后使用 HAVING 子句 可应用限定条件进行分组 以便系统仅对满足条件的组返回结果 为此 在GROUP BY 子句后面包含一个 HAVING 子句 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词 每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较 该组的另一个特性 例如 HAVING AVG(SALARY) > * MIN(SALARY) 常数 例如 HAVING AVG(SALARY) > 例如 下列查询寻找雇员数超过 的部门的最高和最低薪水 SELECT WORKDEPT MAX(SALARY) AS MAXIMUM MIN(SALARY) AS MINIMUM FROM EMPLOYEE GROUP BY WORKDEPT HAVING COUNT(*) > ORDER BY WORKDEPT 此语句产生下列结果 educity cn/img_ / / / jpg > 有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句 在此情况下 DB 将整个表看作一个组 因为该表被看作是单个组 所以最多可以有一个结果行 如果 HAVING 条件对整个表为真 则返回选择的结果(该结果必须整个由列函数组成) 否则不返回任何行 lishixinzhi/Article/program/SQLServer/201311/11239 很赞哦! (1065)