这是我的表
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
答案 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