我必须写一个查询,它返回的书籍价格大于同类书籍的平均价格。所以,我使用以下查询做到了这一点:
select title
from titles
where price >
(
select avg(price)
from titles
group by type
)
然而它会抛出此错误:
subquery returned more than 1 value
>可以理解不能用于值列表。但我想知道我能解决这个问题的方法。请让我知道我需要使用的查询。数据库是pubs
titles table:
title_id , title, type, price, advance, notes, sales
所以我需要以价格>获得标题相似类型的平均(价格)
答案 0 :(得分:4)
关键是使用主查询中的类型来过滤子查询中的类型。
SELECT t.title
FROM titles t
WHERE t.price > (SELECT AVG(t2.price)
FROM titles t2
WHERE t2.type = t.type)
答案 1 :(得分:3)
您有多种类型,因此每种类型都返回平均值。
如果您正在寻找价格高于所有平均类型的标题,举例如下:
SELECT title
FROM titles
WHERE price > ALL
(
SELECT AVG(price)
FROM titles
GROUP BY type
)
您可以类似地将ALL
更改为SOME
或ANY
以满足您的需求。
答案 2 :(得分:1)
select title
from titles
where price >
(select avg(price) from titles)
上述查询假设您希望比较所有标题价格的平均值。这将返回标量值并允许您的查询成功。
答案 3 :(得分:0)
您需要链接子查询和主查询中的类型,例如:
select
a.title
from
titles a
where
a.price > ( select avg(b.price) from titles b where a.type = b.type group by b.type)