如何解决哪个月的甲骨文预订次数最多

时间:2017-03-01 18:35:20

标签: oracle

这是我的表

CREATE TABLE Book (
    hotelNo VARCHAR2(2) NOT NULL,
    guestNo VARCHAR2(1) DEFAULT NULL,
    dateFrom DATE NOT NULL,
    dateTo DATE NOT NULL,
    roomNo VARCHAR2(2) NOT NULL,
    CONSTRAINT pk_Book PRIMARY KEY(hotelNo)
);

这是我的一个数据(hotelNo,roomNo,guestNo,dateFrom,dateTo)VALUES(13,20,16,to_date('1/21/2008','MM / DD / YYYY'),to_date(' 4/0/2008','MM / DD / YYYY'));

我的解决方案是

从预订中选择dateFrom,COUNT(*)TOTAL GROUP BY dateFrom ORDER BY dateFrom DESC

1 个答案:

答案 0 :(得分:0)

这可能是一种简单的方法,按年和月汇总,排序次数并保持行的最大出现次数。

如果你有超过一个月的最大出现次数,这只会给出其中一个。

假设你有一张这样的表:

insert into book values (1, null, date '2017-01-01', date '2017-01-01', 99);
insert into book values (2, null, date '2017-01-02', date '2017-01-01', 99);
insert into book values (3, null, date '2017-01-03', date '2017-01-01', 99);
insert into book values (4, null, date '2017-02-01', date '2017-01-01', 99);
insert into book values (5, null, date '2017-02-02', date '2017-01-01', 99);

此查询

select *
from (
        select count(1),
               extract(month from dateFrom) month,
               extract(year  from dateFrom) year
        from Book
        group by extract(month from dateFrom),
                 extract(year  from dateFrom)
        order by 1 desc
    )
where rownum = 1

将给出

  COUNT(1)      MONTH       YEAR
---------- ---------- ----------
         3          1       2017