从以下Produce
表中
FRUITS PRICE
Granny Smith Apple $ 10
Golden Orchard Apple $ 15
Spotted Banana $ 20
Small Banana $ 15
Green Pear $ 25
Seedless Grapes $ 10
Juicy Watermelon $ 30
我想返回以下结果集,其中不包括所有重复行:
FRUITS PRICE
Spotted Banana $ 20
Green Pear $ 25
Juicy Watermelon $ 30
我的SQL如下:
SELECT DISTINCT fruits, price
FROM produce
WHERE price IN
(SELECT DISTINCT price
FROM produce);
我的代码有效,但它没有产生上面所需的结果集。
编辑:
以下查询产生了我需要的结果集之一(非重复价格),但我只需要水果'它旁边的名称列:
SELECT DISTINCT price
FROM produce
答案 0 :(得分:1)
我相信这会做你想要的:
select min(fruit) as fruit, price
from produce
group by price
having count(*) = 1;
由于having
子句将行数限制为一行,因此min()
是该行的值。
如果您有更多列,那么您可能会使用窗口函数以更传统的方式执行此操作:
select p.*
from (select p.*, count(*) over (partition by price) as cnt
from produce p
) p
where cnt = 1;
答案 1 :(得分:0)
您需要按价格分组,并忽略所有数量超过1的水果
select p.FRUITS, p.PRICE from produce p
group by p.PRICE
having count(p.PRICE)=1;