/*查找图书类别,要求类别中最高图书定价不低于全部按类别分组的平均定价的2倍。*/select * from 图书
where 类别 in(
select 类别 from 图书
group by 类别 
having max(定价)>=any (select 2*avg(定价) from 图书
group by 类别))SELECT *  FROM 图书 
GROUP BY 类别 HAVING MAX(定价)>=ALL
(SELECT 2*AVG(定价) FROM 图书
                                GROUP BY 类别)以上是问题和答案 
两组语句是等价的(答案如是说)
请问 这两组语句在sql里面具体的执行过程是怎样的
就是像分组和求均值谁先做的问题

解决方案 »

  1.   

    http://blog.csdn.net/feixianxxx/archive/2009/10/18/4694354.aspx
      

  2.   

    http://blog.csdn.net/feixianxxx/archive/2009/10/18/4694354.aspx
    这回
      

  3.   

    第二句不对,“ SELECT * FROM 图书 GROUP BY 类别 HAVING MAX(定价)>=ALL (SELECT 2*AVG(定价) FROM 图书 GROUP BY 类别)”,既然分组了,前面写 select * 肯定会出错的。
    借地方问一下,“ ALL”在这句里是什么意思啊?
      

  4.   

    SELECT 类别, MAX(定价) 定价
    FROM 图书 T 
    GROUP BY 类别 
    HAVING MAX(定价)>=(SELECT 2*AVG(定价*1.) FROM 图书 WHERE 类别=T.类别)?