¿Cómo mostrar el registro con el valor más alto en Oracle?

Tengo 4 mesas con la siguiente estructura:

Mesaartist:

artistID lastname firstname nationality dateofbirth datedcease

Mesawork:

workId title copy medium description artist ID

MesaTrans:

TransactionID Date Acquired Acquistionprice datesold askingprice salesprice customerID workID

MesaCustomer:

customerID lastname Firstname street city state zippostalcode country areacode phonenumber email

La primera pregunta es qué artista tiene más obras deartsold Y cuántas obras del artista se han vendido.

Mi consulta SQL es la siguiente:

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;

Debo obtener la tabla completa, pero solo quiero mostrar la primera fila, que es la cuenta más alta, ¿cómo puedo hacer eso?

He intentado insertarWHERE ROWNUM <=1 pero muestra la identificación del artista con 1

qns 2 es las ventas de las cuales el trabajo del artista ha dado como resultado la ganancia promedio más alta (es decir, el promedio de las ganancias obtenidas en cada venta de obras por un artista), y cuál es esa cantidad.

Mi consulta SQL es:

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);

No soy capaz de ejecutarlo

He intentado realizar una consulta a continuación, pero todavía no puedo obtenerla. El error no aparece entre paréntesis.

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta