次の構造を持つ 4 つのテーブルがあります。
表artist
:
artistID lastname firstname nationality dateofbirth datedcease
表work
:
workId title copy medium description artist ID
表Trans
:
TransactionID Date Acquired Acquistionprice datesold askingprice salesprice customerID workID
表Customer
:
customerID lastname Firstname street city state zippostalcode country areacode phonenumber email
最初の質問はartsold
、どのアーティストの作品が最も多く、そのアーティストの作品の販売数です。
私のSQLクエリはこれです:
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;
テーブル全体を取得する必要がありますが、カウントが最も高い最初の行のみを表示したいのですが、どうすればよいですか??
挿入しようとしWHERE ROWNUM <=1
ましたが、アーティストIDが1で表示されます
qns 2 は、どのアーティストの作品が最高の平均利益 (つまり、アーティストによる作品の各販売で得られた利益の平均) をもたらしたかであり、その金額はいくらか.
私のSQLクエリは次のとおりです。
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);
私はそれを実行することができません
以下のクエリを試しましたが、それでも取得できず、右括弧がありませんというエラーが発生し続けます
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