-1

给定以下设置,对于每个CD_name,我如何找出购买最多的日子。我的结果表应该列出CD_no, 和当天的日期(别名为“最忙”)。如果一张 CD 有好几天被购买的数量相等,那么一张 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 回答