我正在为我正在学习的SQL入门课程处理家庭作业问题。本周的主题是摘要功能。这是问题所在:
通过出版商名称和类别确定书籍的平均零售价格。仅包括“儿童和计算机”类别以及平均零售价大于50美元的组。
以下是相关表格的图片:
我编写了此查询,该查询按发布者名称和类别返回平均零售价,但无法弄清楚如何仅返回超过50美元的平均零售价。
select p.name, b. category, avg(b.retail)
from books b, publisher p
where b.pubid = p.pubid
and b.category in ('CHILDREN','COMPUTER')
group by p.name, b.category;
上面的代码返回以下内容:
发布商Reed-N-Rite的平均零售价低于$ 50-需要在查询中添加哪些内容,以便我可以将语句中的结果过滤为零售价大于$ 50的那些?
答案 0 :(得分:2)
当使用聚合函数(如avg)时,必须在其他列上使用group by,而在使用group by时,必须在聚合列上使用have for set where子句。 为此,使用“具有”:
select p.name, b. category, avg(b.retail)
from books b, publisher p
where b.pubid = p.pubid
and b.category in ('CHILDREN','COMPUTER')
group by p.name, b.category
having avg(b.retail) > 50
答案 1 :(得分:0)
向您的查询添加HAVING子句。 HAVING适用于组功能:
select p.name, b. category, avg(b.retail)
from books b, publisher p
where b.pubid = p.pubid
and b.category in ('CHILDREN','COMPUTER')
group by p.name, b.category
having avg(b.retail) > 50;