SQL显示高于平均价格的书籍,显示所有书籍的平均价格。

时间:2018-11-28 00:53:02

标签: sql database phpmyadmin

所以我对子查询有疑问,我需要显示三件事: 高于书籍平均价格的书籍,这些书籍的标题以及显示数据库中所有书籍平均价格的列。 我尝试了以下方法,但是这几乎满足了我的所有需求。我仍然需要所有书籍的平均水平。我的问题是第二段代码。

SELECT title_name, price 
FROM titles
WHERE price >(SELECT AVG(price) Average_Price FROM titles);

第二个片段,我尝试在其中查找以下所有书籍的平均值。

 SELECT AVG(price),title_name, price 
 FROM titles
 WHERE price >(SELECT AVG(price) Average_Price FROM titles);

我想我在这里遗漏了一些非常简单的东西,我只是不能完全动手。我想要所有书籍的平均值,因此我觉得这应该是初始声明的一部分,但是当我在此处添加它时,它的计算不正确..我相信这是在计算所有书籍的平均值以上的所有书籍的平均值书..如果有人可以给我一些指导,我什至不一定需要给我答案。.也许只是指向正确的方向。 哦,注意到我们使用phpmyAdmin作为工作空间可能会有所帮助。感谢所有的帮助。 =]

2 个答案:

答案 0 :(得分:1)

将子查询放在FROM子句中!

SELECT t.title_name, t.price, a.Average_Price 
FROM titles t CROSS JOIN
     (SELECT AVG(price) as Average_Price FROM titles) a
WHERE t.price > a.Average_Price;

通过这种方式,子查询仅被评估一次,一旦数据库变大,这可能是一个非常重要的考虑因素。

答案 1 :(得分:0)

尝试类似

SELECT (select avg(price) from titles) as AvgPrice ,title_name, price 
from titles 
where price > (select avg(price) average_price from titles)

您的选择的主要部分受到where子句的限制,因此您选择的商品的平均价格高于平均价格。嵌套选择可以解决此问题(尽管我主要使用Oracle,但我认为这也应该适用于MySQL)。