我现在有两个表。
表1Te:字段信息如下:
ID  CreateTime  score   Name
表2DB:字段信息如下:
score
我现在要查询出来的结果是这样的:
对Te表我要  查询createTime介于一个时间段内  而且要以Name进行分组查询求这个组的score的平均值
select sum(*)/count(*) from Te where CreateTime between A and B group by name 
现在我要再加一个查询功能。就是在这个组里面我要查询出来score超过了DB表中的score字段值的记录信息
怎么加进来呢?
哦,对了我是用MYSQL数据库进行操作的

解决方案 »

  1.   

    select * from te
    where score > (select max(score) from DB)
      

  2.   

    表1Te:字段信息如下:
    ID  CreateTime           score    Name
    1   2008-11-03 13:30:47  10       a
    2   2008-11-10 13:30:48  20       a
    3   2008-11-11 13:30:48  30       c
    4   2008-11-12 13:30:48  40       b
    5   2008-11-13 13:30:48  10       c
    6   2008-11-14 13:30:48  20       b 表2DB:字段信息如下:
    score
    15我现在要得到的结果如下:
    name    avg_score      max_score     chaoguodb
    a       15             20            1
    b       30             40            2
    c       20             30            1 
    具体一点的数据哈哈。继续支持谢谢了各位朋友
      

  3.   

    select a.name,b.avg_score,max(a.score) as max_score,count(*) as chaoguodb
    form te a inner join (select Name,avg(score) as avg_score from te group by Name)
    on a.Name=b.Name
    where a.score>b.avg_score
    group by a.name,b.avg_score从你的例子看不出和 表2DB 有什么关系。 以上SQL应该能产生你 6楼 的结果。
    每人的平均分,每人的最高分,及超过自己平均分的次数
      

  4.   

    SELECT name,avg(score),max(a.score),sum(if(score>newsc,1,0))
     from (SELECT ttr.*,b2.score as newsc from ttr,b2
    ) a 
    group by name
      

  5.   

    注意:你的两表没有相同的KEY字段,针对你的数据用笛尔卡积,如果B表数据
    多的话,速度较慢
      

  6.   

    大家帮忙啊,
    表1Te:字段信息如下:
    ID  CreateTime          score    Name
    1  2008-11-03 13:30:47  10      a
    2  2008-11-10 13:30:48  20      a
    3  2008-11-11 13:30:48  30      c
    4  2008-11-12 13:30:48  40      b
    5  2008-11-13 13:30:48  10      c
    6  2008-11-14 13:30:48  20      b表2DB:字段信息如下:
    score
    15我现在要得到的结果如下:
    name    avg_score      max_score    chaoguodb
    a      15            20            1
    b      30            40            2
    c      20            30            1
    具体一点的数据哈哈。继续支持谢谢了各位朋友
    说明这些数据来源:
    其中的avg_score表示查询Te表的时候通过以name进行分组处理得到的分数。
    max_score表示查询Te表的时候以name分组处理中的最大值
    chaoguodb表示Te表中的score超过了DB中的score的数据。比如说a  它只有一个超过了15所以为1
      

  7.   

    select a.name,avg(a.score) as avg_score,max(a.score) as max_score, sum(if(a.score>b.score,1,0)) as chaoguodb
    from te a, DB b
    group by a.name
    问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  8.   

    13楼的高手 你SQL好强哦。根据你的方法我写出来了哈哈马上加分谢谢了!