-1

次の設定が与えられた場合、各CD_nameについて、どの日が最も多く購入されたかを調べるにはどうすればよいでしょうか。私の結果テーブルには、CD_no、およびその日の日付がリストされているはずです(エイリアス「Busiest」を使用)。同じ金額で購入された日数が数日ある場合、CD は結果テーブルに複数回表示される可能性があるため、結果テーブルをCD_noアルファベット順に並べ替え、同じ CD_no については、日付の早い順に並べ替えます。

CREATE TABLE CD 
(
  CD_no TINYINT UNSIGNED,
  genre VARCHAR(60),
  purchase_date DATE NOT NULL,
  publication_time TIME NOT NULL,
  Artist VARCHAR(20)
);

編集

予想される出力には、CD_number と最も忙しかった日の日付がリストされます。CD 番号は、同じ量の購入があった複数の日に表示される場合もあります。

たとえば、次のデータを使用します。

CD_No   purchase_date    
1        2012-07-09
1        2012-07-09
1        2012-07-09
1        2012-07-10
1        2012-07-10
2        2012-11-11
2        2012-11-11
2        2012-11-12
2        2012-11-12

次の結果テーブルが必要です。

CD_NO      Busiest
1        2012-07-09
2        2012-11-11
2        2012-11-12

cd_no 1 がその日に最も多くの売上を上げ、cd_no 2 が共同購入したためです。

4

2 に答える 2

2
select CD_no,
       purchase_date as busiest
from CD
group by CD_no, purchase_date 
order by count(purchase_date) desc,
         CD_no asc,
         purchase_date asc
limit 3
于 2012-11-26T20:52:59.173 に答える
1

SQLフィドル

create view purchases as
select cd_no, purchase_date, count(*) as purchases
from cd
group by cd_no, purchase_date;

select p1.cd_no, p1.purchase_date as busiest
from purchases p1
join (select cd_no, max(purchases) as purchases
      from purchases
      group by cd_no) as p2
      on p1.cd_no = p2.cd_no and p1.purchases = p2.purchases
order by p1.cd_no, p1.purchase_date;
于 2012-11-26T21:40:04.297 に答える