Übung 24 - Finden Sie die Modell-Nummer des Produktes (PC, laptop oder Drucker) mit dem höchsten Preis. ResultSet: Modell
Habe ich dieses SQL-statement und gibt die korrekte Antwort, aber es ist zu lange ich kann nicht herausfinden, wie die Wiederverwendung der alias, also ich hatte geschrieben das ganze wieder WÄHLEN:
select model from
(
select model, max(price) as maxt from
(
select model,price from pc where price in (select max(price) from pc)
union
select model,price from laptop where price in (select max(price) from laptop)
union
select model,price from printer where price in (select max(price) from printer)
) as ab
group by model
) as ba
where maxt in
(
select max(maxt) from (
select model, max(price) as maxt from
(
select model,price from pc where price in (select max(price) from pc)
union
select model,price from laptop where price in (select max(price) from laptop)
union
select model,price from printer where price in (select max(price) from printer)
) as aba
group by model
) as bac )
Ist die übung :
Finden die Modell-Nummer des Produktes (PC, laptop oder Drucker) mit dem höchsten Preis.
ResultSet: Modell.
Tisch Laptop
code model speed ram hd price screen
------------------------------------------------------
1 1298 350 32 4.0 700.0000 11
2 1321 500 64 8.0 970.0000 12
3 1750 750 128 12.0 1200.0000 14
4 1298 600 64 10.0 1050.0000 15
5 1752 750 128 10.0 1150.0000 14
6 1298 450 64 10.0 950.0000 12
Den PC-Tisch:
code model speed ram hd cd price
-------------------------------------------------------
1 1232 500 64 5.0 12x 600.0000
10 1260 500 32 10.0 12x 350.0000
11 1233 900 128 40.0 40x 980.0000
12 1233 800 128 20.0 50x 970.0000
2 1121 750 128 14.0 40x 850.0000
3 1233 500 64 5.0 12x 600.0000
4 1121 600 128 14.0 40x 850.0000
5 1121 600 128 8.0 40x 850.0000
6 1233 750 128 20.0 50x 950.0000
7 1232 500 32 10.0 12x 400.0000
8 1232 450 64 8.0 24x 350.0000
9 1232 450 32 10.0 24x 350.0000
Drucker Tabelle:
code model color type price
-----------------------------------------
1 1276 n Laser 400.0000
2 1433 y Jet 270.0000
3 1434 y Jet 290.0000
4 1401 n Matrix 150.0000
5 1408 n Matrix 270.0000
6 1288 n Laser 400.0000
Tabelle Produkt:
maker model Type
-----------------------
A 1232 PC
A 1233 PC
A 1276 Printer
A 1298 Laptop
A 1401 Printer
A 1408 Printer
A 1752 Laptop
B 1121 PC
B 1750 Laptop
C 1321 Laptop
D 1288 Printer
D 1433 Printer
E 1260 PC
E 1434 Printer
E 2112 PC
E 2113 PC
- Möchten Sie vielleicht re-Bearbeiten Sie die Frage und verwenden Sie die
{}
- Taste auf der code-Blöcke und andere Stücke von text, wo Sie wollen, mit einem festen layout (und syntax-highlighting auch), anstatt das hinzufügen all diese<br/>
s. - Was ist das erwartete Ergebnis? Die meisten teure Sache, sei es ein laptop, ein PC oder ein Drucker, oder drei Zeilen mit den teuersten Artikel zu jedem Produkt geben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass diese Abfrage entspricht der Abfrage:
DBMS
sind Sie mit meinem Freund?gibt es eine Menge von Möglichkeiten, um die Aufgabe zu lösen, hier ist die kostenlos, wie für mich:
und eine weitere Verwendung MIT:
Nicht überkompliziert Dinge. Es gibt keine Notwendigkeit für "alias " Wiederverwendung". Ein alias ist ein Weg, um eine Tabelle oder Spalte einen anderen Namen. Entweder weniger schreiben, oder zur Unterscheidung von Tabellen wenn Sie sich 2 mal das gleiche oder so etwas. Sie haben nicht zu tun. Hier ist die "Lehre einen Mann zu Fischen" - Methode:
(Quelle) Die Zeilen Halten das gruppenweise Maximum eines Bestimmten Spalte:
Aufgabe: Suche Für jeden Artikel den der Händler oder die Händler mit den teuersten Preisen.
Dieses problem lässt sich mit einer Unterabfrage wie diese:
Dem vorangehenden Beispiel wird eine korrelierte Unterabfrage, die ineffizient sein kann (siehe Abschnitt 13.2.10.7, "Korrelierte Unterabfragen"). Andere Möglichkeiten zur Lösung des Problems die Verwendung einer unkorrelierten Unterabfrage in der FROM-Klausel oder einen LEFT JOIN.
Unkorrelierten Unterabfrage:
LEFT JOIN:
Den LEFT JOIN funktioniert auf der Grundlage, dass bei der s1.Preis ist auf seinen maximalen Wert, es ist kein s2.Preis mit einem höheren Wert und s2-Zeilen Werte NULL.
Recht.
Das Ergebnis Ihrer Abfrage:
MODELL
1750
Mit option für MS-SQL-server, glaube ich, auch in oracle
UNION ALL
Wie etwa eine kürzere version?
Meine anwser ist
Meine Antwort
Dieser Antwort wurde gegeben von einem Freund:
Wir können dies erreichen, mit Rang-Funktion.Bbelow ist die Abfrage: