2017-03-04 4 views
0

Aus der folgenden Produce TabelleNur nicht duplizierte Zeilen in derselben Tabelle zurückgeben?

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 

Ich mag folgende Ergebnismenge zurück, in der alle doppelten Zeilen nicht enthalten sind:

FRUITS    PRICE 
Spotted Banana  $ 20 
Green Pear   $ 25 
Juicy Watermelon  $ 30 

My SQL ist wie folgt:

SELECT DISTINCT fruits, price 
FROM produce 
WHERE price IN 
    (SELECT DISTINCT price 
    FROM produce); 

Mein Code funktioniert, aber es produziert nicht das gewünschte Ergebnis.

EDIT:

Die folgende Abfrage erzeugt eine der Spalten (nicht doppelten Preis) Ich brauche für das Ergebnis gesetzt, aber ich brauche nur die Namen der Spalte Früchte daneben:

SELECT DISTINCT price 
    FROM produce 
+0

was Duplikate hier sind? –

+0

die Preise $ 10 und $ 15 – 5120bee

Antwort

1

ich dies tun glauben, zählen zu haben, was Sie wollen:

Da die Klausel having die Anzahl der Zeilen auf einen Preis auf eine Zeile begrenzt, ist der Wert min() der Wert in dieser Zeile.

Wenn Sie mehr Spalten haben, dann würden Sie wahrscheinlich tun dies die traditionelle Art und Weise Funktionen Fenster:

select p.* 
from (select p.*, count(*) over (partition by price) as cnt 
     from produce p 
    ) p 
where cnt = 1; 
+0

Danke für die Erklärung! – 5120bee

0

Sie müssen Gruppe nach Preis, und ignorieren alle diese Früchte mehr als 1

select p.FRUITS, p.PRICE from produce p 
group by p.PRICE 
having count(p.PRICE)=1; 
+0

@ 5120bee überprüfen, ob dies funktioniert. – afrose

+0

'ORA-00979 keine Gruppe von Ausdruck' – MT0

+0

@afrose - wird es nicht. – mathguy

Verwandte Themen