使用基于平均值的最大值和最小值确定最低平均成本和最高平均成本(MySQL)时出错

使用基于平均值的最大值和最小值确定最低平均成本和最高平均成本(MySQL)时出错,mysql,max,average,min,Mysql,Max,Average,Min,我已根据以下内容确定了平均主题成本: FROM BOOK JOIN (SELECT BOOK_SUBJECT, Avg(BOOK_COST) AS AVGCOST FROM BOOK GROUP BY BOOK_SUBJECT) AS SUB USING (BOOK_SUBJECT) ORDER BY BOOK_TITLE; 但是,我现在需要显示一个主题内书籍的最低平均成本和一个主题内书籍的最高平均成本。我知道我需要使用MIN和MAX,但现在我不确定语法,因为我必须基于AVG 这是我的尝试 S

我已根据以下内容确定了平均主题成本:

FROM BOOK
JOIN
(SELECT BOOK_SUBJECT,
Avg(BOOK_COST) AS AVGCOST
FROM BOOK
GROUP BY BOOK_SUBJECT) AS SUB USING (BOOK_SUBJECT)
ORDER BY BOOK_TITLE;
但是,我现在需要显示一个主题内书籍的最低平均成本和一个主题内书籍的最高平均成本。我知道我需要使用MIN和MAX,但现在我不确定语法,因为我必须基于AVG

这是我的尝试

SELECT BOOK_SUBJECT
FROM BOOK
WHERE BOOK_COST =
(SELECT MIN(AVGCOST)
FROM BOOK)
ORDER BY BOOK_SUBJECT;

SELECT BOOK_SUBJECT
FROM BOOK
WHERE BOOK_COST =
(SELECT MAX(AVGCOST)
FROM BOOK)
ORDER BY BOOK_SUBJECT;

这将创建一个SQL错误:字段列表中的未知列AVGCOST。我该怎么做?我知道它在寻找一个属性,但找不到它,那么需要在代码中添加什么,以便MySQL计算平均值的最小值和最大值?非常感谢那些回复您的人,您的反馈非常棒。

我认为您想要实现的是

SELECT *
FROM BOOK
JOIN
(
   SELECT BOOK_SUBJECT,
   AVG(BOOK_COST) AS AVGCOST,
   MIN(BOOK_COST) AS MINCOST,
   MAX(BOOK_COST) AS MAXCOST
   FROM BOOK
   GROUP BY BOOK_SUBJECT
) AS SUB USING (BOOK_SUBJECT)
ORDER BY BOOK_TITLE;
基于

BOOK_SUBJECT BOOK_TITLE BOOK_COST
------------ ---------- ---------------------
MATHS        Book 1     15.99
MATHS        Book 2     14.99
MATHS        Book 3     13.99
ENGLISH      Book A     10.99
ENGLISH      Book B     9.99
返回

BOOK_SUBJECT BOOK_TITLE BOOK_COST AVGCOST MINCOST MAXCOST
------------ ---------- --------- ------- ------- -------
MATHS        Book 1     15.99     14.99   13.99   15.99
MATHS        Book 2     14.99     14.99   13.99   15.99
MATHS        Book 3     13.99     14.99   13.99   15.99
ENGLISH      Book A     10.99     10.49   9.99    10.99
ENGLISH      Book B     9.99      10.49   9.99    10.99
将最小/最大平均成本四舍五入到小数点后2位

SELECT 
  ROUND(MIN(MM.AVGCOST), 2) AS MINAVG, 
  ROUND(MAX(MM.AVGCOST), 2) AS MAXAVG
FROM
(
   SELECT BOOK_SUBJECT, 
   AVG(BOOK_COST) AS AVGCOST
   FROM BOOK
   GROUP BY BOOK_SUBJECT
) MM
会回来的

MINAVG    MAXAVG
------    ------
10.49     14.99

请你澄清一下;如果同一主题中有3本书,价格分别为5英镑、10英镑和15英镑,那么平均价格为10英镑。。。没有MINAVERAGE和MAXAVERAGE;也许您可以包括一个简单的图书表格示例和一个您试图输出的内容示例?谢谢@Sean。以下是全部代码:选择图书主题,RoundAVGCOST,2作为图书的平均主题成本加入选择图书主题,按书籍主题作为子项使用书籍主题顺序按书籍标题从书籍组中提取的AVG书籍成本作为AVG成本 第一批代码是确定所有主题的平均成本。当我运行代码时,我得到以下结果:中间件=89.95,云=72.45,数据库=84.95,编程=66.62。因此,后续代码是选择最低平均值66.62和最高平均值89.95。我认为这有道理。@ppines有道理;我已经更新了我的原始回复,添加了一个新的内容,实现了这一点。感谢您的跟进。不幸的是,第二部分导致了一个错误:“每个派生表都必须有自己的别名”。我觉得很奇怪,因为它清楚地将MINAVGCOST表示为MINAVG,MAXAVGCOST表示为MAXAVG。这是因为它在更新的表中找不到这些属性吗?@ppines-我发布了代码,书表写为\@BOOK,我刚刚更改了它。你能检查一下你的代码中没有\@BOOK吗?