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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage