私は4つのテーブルを持っています。一人はアーティストと呼ばれる。テーブル構造は次のとおりです。
artistID lastname firstname nationality dateofbirth datedcease
もう一方のテーブルは work と呼ばれます
workId title copy medium description artist ID
トランステーブル
TransactionID Date Acquired Acquistionprice datesold
askingprice salesprice customerID workID
顧客テーブル
customerID lastname Firstname street city state
zippostalcode country areacode phonenumber email
最初の質問は、どのアーティストが最も多くの作品を販売し、アーティストの作品が何点販売されたかです。
私の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;
テーブル全体を取得する必要がありますが、カウントが最も高い最初の行のみを表示したいのですが、どうすればよいですか??
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);
私はそれを実行することができません