1

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

私はそれを実行することができません

4

2 に答える 2

0

limit 1あなたの最初の質問に使用してください

于 2012-10-06T10:31:23.733 に答える
0

2 番目の問題は、最初の問題とまったく同じように解決できます。交換するだけ

COUNT(W1.ArtistID)

AVG(salesPrice - AcquisitionPrice) as AvgProfit

そして、次を使用します。

ORDER BY AvgProfit DESC
LIMIT 1

完全なクエリは次のようになります。

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
于 2012-10-06T10:37:54.277 に答える