代码之家  ›  专栏  ›  技术社区  ›  Chris Schlitt

具有来自另一个表的平均值的MySQL子查询

  •  0
  • Chris Schlitt  · 技术社区  · 11 年前

    我确信这已经得到了答案,但就我的一生而言,我找不到答案。

    如果我有两个表(gre_word和gre_link)。grey_words表有列(id,word,definition),gre_link表有列列(word_id,难度)。

    基本上,在每个问题之后,一个条目进入gre_link,其中包含单词的id和难度(如果正确,则为0,如果错误,则为1)。

    所以我现在想列出最难的5个单词。

    我想我需要一个MySQL SELECT语句,在难度列上使用带有AVG()函数的嵌套语句。我该怎么做?

    1 回复  |  直到 11 年前
        1
  •  0
  •   jpw    11 年前

    如果我正确理解你的问题,我认为你只需要加入并应用 avg 函数,并将结果限制为5个最低平均值,因此这可能是您想要的:

    select 
        w.word, avg(l.difficulty * 1.0) average_correct
    from 
        gre_words w
    join 
        gre_link l on w.id = l.word_id
    group by 
        w.word
    order by 
        avg(l.difficulty * 1.0)
    limit 5
    

    注意,这排除了gre_words表中的单词,这些单词在gre_link表中没有任何对应的行。