倒底是什么意思呢?举個具体例子 id 类别 金额 1 ASP 10 2 ASP 15 3 PHP 8 4 SQL 22 select sum(金额) from [table] group by 类别 返回: 25 8 22 http://expert.csdn.net/expert/faq/faq_index.asp?id=20799 group by *** 就是按***分组操作 sql server 的联机丛书是最好的帮助。 group by子句查询结果表按某一列或多列分组,值相等为一组,向你给的例子两个asp为一组查询语句按类别分类,对所要查找的sum对每个组进行计算加和,如25为asp一组中两个金额的相加 group by *** 就是按***分组操作 按**分类=== group by *** 就是按***分组操作 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 子句之后使用 HAVING 子句 可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 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 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。