2017-03-01 24 views
-5

預訂人數最多的這是我的表如何解決哪個月有在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)方法的一個值(13,20, 16,to_date('1/21/2008','MM/DD/YYYY'),to_date('4/0/2008','MM/DD/YYYY'));

我的解決辦法是

SELECT dateFrom,從預訂 GROUP COUNT(*)共逐dateFrom ORDER BY dateFrom DESC

+2

如何給它一個試試? – BobC

+0

我試過但不行。 –

+0

選擇日期從,預訂計數(*)總計 GROUP BY date從 ORDER BY dateFrom DESC limit 1; –

回答

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 
+0

非常感謝你,我明白了 –

相關問題