¿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