在我的数据库中,我具有以下架构:

table: files
columns: fileId, authorId, fileSize

table: authors
columns: authorId, surname, firstName


现在,id喜欢选择文件大小平均值最高的作者的authorId。我现在对如何最好地加入这些席位一无所知。我已经能够选择一个作者的平均文件大小,但是现在必须扩展它以与每个作者一起使用。

SELECT AVG(`fileSize`) FROM (
    SELECT `fileSize`, `files`.`authorId` FROM `files`
        INNER JOIN `authors` aut ON `files`.authorId = aut.authorId
    WHERE aut.authorId = 6)
as T;

最佳答案

如果仅需要authorId,则只能通过files表找到它:

SELECT authorId
FROM files
GROUP BY authorId
ORDER BY AVG(fileSize) DESC
LIMIT 1 ;


如果您还需要该作者的其他数据,则可以将先前的派生表添加为男性,然后将其加入authors

SELECT a.*                         -- the columns you need
FROM authors AS a
  JOIN
  ( SELECT authorId
    FROM files
    GROUP BY authorId
    ORDER BY AVG(fileSize) DESC
    LIMIT 1
  ) AS m
  ON m.authorId = a.authorId ;

关于mysql - 选择具有最大平均值的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20127181/

10-13 00:52