那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。HAVING 的语法如下: 
SELECT "栏位1", SUM("栏位2")  FROM "表格名"  GROUP BY "栏位1"  HAVING (函数条件) 
请读者注意: GROUP BY 子句并不是一定需要的。这是公司给的资料。我试过了会报错,不用group by 会报错 ORA-00937,而且查的字段除了聚合函数不用,其它必须进行group by  这是为什么?

解决方案 »

  1.   

    当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我 们都需要将其放在 GROUP BY 的子句中。
      

  2.   

    group by 是用于分组的。是使用group by 时如果要加条件(相当于where)就要使用having子句。
    group by 可以不使用having(没有条件来约束它)
      

  3.   

    having必须含group by的
    having是对分组统计的结果再次进行筛选的子句,没分组怎么筛选
      

  4.   

    SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件)  
    只要你的查询结果中全部是用聚合的函数处理了就不需要group by
    select sum(col),max(col2) from tb having max(col2)>某个值 加个having只是从分组的条件筛选出自己需要的结果SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件)  
    像这样就是必须的加group by "栏位1"而且having 是跟group by配对的