2016-04-13 1 views
-1

Найти самый загруженный месяц регистрации для домашнего животного в прошлом. Мы предполагаем, что чем больше домашних животных зарегистрированы, тем занят месяц.извлечь только месяц

SQL> select reg_month, registration 
from 
(select to_char(dateRegistered,'dd-mon')reg_month,count(*) registration 
from pet 
group by to_char(dateRegistered,'dd-mon')) 
where registration = (select max(registration) 
from (select to_char(dateRegistered,'dd-mon')reg_month,count(*) registration 
from pet 
group by to_char(dateRegistered,'dd-mon'))); 



REG_MONTH REGISTRATION 
--------------- ------------ 
12-nov   3 

Может кто-то, пожалуйста, помогите мне извлечь только месяц вместо дня.

+0

'to_char (dateRegistered, 'пн')' –

+0

@Gordon Linoff я попробовал, что один, но я только получаю ошибку. – jojo

+0

Вы действительно хотите объединить все записи, например, с ноября в течение всех лет? Это не ясно из первого предложения. –

ответ

2

Oracle поддерживает стандарт SQL-х EXTRACT, а затем вы можете использовать RANK:

select * 
from 
(select extract(month from dateRegistered) as mnth, 
     count(*) as cnt, 
     rank() over (order by count(*) desc) as rnk 
    from pet 
    group by extract(month from dateRegistered) 
) dt 
where rnk = 1 
+0

возможно изменить 11 появляться в месяц персонажа, как новь, а не 11. спасибо. – jojo

+0

@jojo: Конечно, просто используйте предложение Гордона: 'to_char (dateRegistered, 'mon'))' – dnoeth

+0

спасибо, за вашу помощь. вы можете взглянуть на ошибку и направить меня один раз. благодаря выберите * из (выберите to_char (dateRegistered, 'пн') в мес, COUNT (*) в качестве НКТ ранга() над (заказ по количеству (*) DESC) как RNK от домашних животных группы by to_char (dateRegistered, 'mon') ) dt где rnk = 1; (выберите to_char (dateRegistered, 'мон') в мес, * Ошибка в строке 3: ORA-00907: отсутствует правая скобка – jojo