Sie haben eine SQL-Tabelle table
mit zwei Spalten: name
und pen
. Beide Spalten sind Textzeichenfolgen.
Der Name der Person wird als Eingabeargument angegeben.
Bitte schreiben Sie eine SQL-Anweisung (keine gespeicherte Prozedur), die Namen von Personen mit einem einzigartigen Satz von Stiften zurückgibt, die äquivalent oder breiter / größer als der Satz von Stiften einer bestimmten Person ist.
Beispiele:
Mike hat (rot, blau, grün).
Anton hat mehr Gadgets (rot, blau, grün) + schwarz.
Steve hat (rot, gelb).
Alex hat (rot, gelb) + grün + schwarz.
Mike, Anton sind nicht gedruckt - sie haben kein Gelb.
Hier ist eine Möglichkeit ( Online-Demo ) unter der Annahme, dass der Eingabe-Name "steve" lautet.
Dies kann so umformuliert werden wie "Suche nach allen Benutzern, für die es keinen Stift gibt, den Steve besitzt, den sie nicht besitzen"
%Vor%Wir können die analytische LEAD-Funktion verwenden, um diese Lösung zu erreichen.
Die Abfrage wäre
%Vor%Die Unterabfrage gibt die Ergebnisse wie folgt
Mike 3 | Steve
steve | 2 | anton
Anton | 4 | Alex
alex | 4 | (null)
Dann filtert die out-Abfrage die Zeile, die benötigt wird, und gibt die next_name
an, nach der wir suchen.
Erstellen Sie Tabellenübungen ( Name varchar (10), Stifte varchar (10)
) Praxis einfügen (Name, Stifte) wähle 'mike', 'red' union wähle 'mike', 'red' union wähle 'mike', 'blue' union wähle 'mike', 'green' union Wählen Sie 'steve', 'red' union Wählen Sie 'steve', 'yellow' union Wählen Sie 'anton', 'blue' union wähle 'anton', 'green' union wähle 'anton', 'black' union wähle 'anton', 'red' union Wählen Sie 'alex', 'black' union Wählen Sie 'alex', 'green' union Wählen Sie 'alex', 'yellow' union wähle 'alex', 'rot'
wähle # aus der Übung in #t aus
%Vor%Wählen Sie einen eindeutigen Farbcode aus #t
/ * IMP-Code / aktualisiere #t Setze Nummer = ( Wählen Sie Anzahl () aus #t wo name = 'steve' und colourcode = 1 ) where name = 'steve' und colourcode = 1
/ * Sobald die obige update-Anweisung ausgeführt wurde, ändern Sie colourcode = 2 und führen Sie die Anweisung erneut aus Ändern Sie den Farbcode = 3 und führen Sie die Anweisung erneut aus Ändern Sie den Farbcode = 4 und führen Sie die Anweisung erneut aus ändere colourcode = 5 und führe die Anweisung * /
erneut aus/ * Folgen Sie dem gleichen Prozess für den Namen "alex", "anton" und "mike" * /
/ * Unten ist die Lösung * /
Wählen Sie den Namen aus #t wo Nummer = ( Wählen Sie eine eindeutige Nummer aus #t wo Farbcode = 3 und Nummer = 1)
Tags und Links sql