Wie wird der Datensatz mit dem höchsten Wert in Oracle angezeigt?
Ich habe 4 Tabellen mit folgender Struktur:
Tabelleartist
:
artistID lastname firstname nationality dateofbirth datedcease
Tabellework
:
workId title copy medium description artist ID
TabelleTrans
:
TransactionID Date Acquired Acquistionprice datesold askingprice salesprice customerID workID
TabelleCustomer
:
customerID lastname Firstname street city state zippostalcode country areacode phonenumber email
Die erste Frage ist, von welchem Künstler die meisten Werke stammenartsold
und wie viele der künstlerischen Arbeiten wurden verkauft.
Meine SQL-Abfrage lautet wie folgt:
SELECT * From dtoohey.artist A1
INNER JOIN
(
SELECT COUNT(W1.ArtistID) AS COUNTER, artistID FROM dtoohey.trans T1
INNER JOIN dtoohey.work W1
ON W1.workid = T1.Workid
GROUP BY W1.artistID
) TEMP1
ON TEMP1.artistID = A1.artistID
WHERE A1.artistID = TEMP1.artistId
ORDER BY COUNTER desc;
Ich soll den ganzen Tisch bekommen, aber ich will nur die erste Reihe zeigen, die die höchste Anzahl ist. Wie mache ich das?
Ich habe versucht, einzufügenWHERE ROWNUM <=1
aber es zeigt Künstler-ID mit 1
qns 2 ist der Umsatz, bei dem die Arbeit des Künstlers zum höchsten durchschnittlichen Gewinn geführt hat (d. h. der Durchschnitt der Gewinne, die bei jedem Verkauf von Werken eines Künstlers erzielt wurden), und wie hoch ist dieser Betrag?
Meine SQL-Abfrage lautet:
SELECT A1.artistid, A1.firstname FROM
(
SELECT
(salesPrice - AcquisitionPrice) as profit,
w1.artistid as ArtistID
FROM dtoohey.trans T1
INNER JOIN dtoohey.WORK W1
on W1.workid = T1.workid
) TEMP1
INNER JOIN dtoohey.artist A1
ON A1.artistID = TEMP1.artistID
GROUP BY A1.artistid
HAVING MAX(PROFIT) = AVG(PROFIT);
Ich kann es nicht ausführen
Ich habe versucht, die unten stehende Abfrage auszuführen, kann sie jedoch immer noch nicht abrufen. Es fehlt immer noch die richtige Klammer
SELECT A1.artistid, A1.firstname, TEMP1.avgProfit
FROM
(
SELECT
AVG(salesPrice - AcquisitionPrice) as avgProfit,
W1.artistid as artistid
FROM dtoohey.trans T1
INNER JOIN dtoohey.WORK W1
ON W1.workid = T1.workid
GROUP BY artistid
ORDER BY avgProfit DESC
LIMIT 1
) TEMP1
INNER JOIN dtoohey.artist A1
ON A1.artisid = TEMP1.artistid