2013-04-19 3 views
2

Я пытаюсь сделать это в течение нескольких часов, но я продолжаю получать нулевой результат. До сих пор я получил следующую таблицу, выполнив запросНайти максимальное значение группы без использования функции Max()/Greatest()

select count(posts) from dbtable group by user

user | posts 
_____________ 
a | 3 
b | 7 
c | 2 
d | 1 
e | 1 

Как я могу отобразить пользователю максимально сообщений без использования макс()/наибольшими() или даже ограничить функции. В исходной таблице, в которой я выполнял вышеуказанный запрос, был список всех сообщений вместе с пользователем, который отправил каждое сообщение, я только что сгруппировал их.

+0

Пожалуйста, продемонстрируйте ваш код, который вы пробовали – hims056

+1

Что вы имеете против предела, максимального или наибольшего? –

+0

Выберите верхнюю часть (1) * FROM (ваш общий ORDER BY [posts] DESC) – KacireeSoftware

ответ

2
select * from 
(
select user,count(posts) cnt from dbtable 
group by user 
) t1 
left join 
(
select user,count(posts) cnt from dbtable 
group by user 
) t2 on (t1.user<>t2.user) and (t1.cnt<t2.cnt) 

where t2.cnt is null 

SQLFiddle demo

+0

WOW, это сработало, ive пытались использовать самостоятельное соединение все это время, но я думаю, что это лучше, спасибо! –

0

Вот еще одно решение, которое работает, но очень медленно для больших таблиц. Я проверил его с небольшим набором из 48 записей, и это достаточно быстро, но на столе с 200.000 записями он работает в течение нескольких часов без завершения. :)

select * 
from 
(
    select distinct column 
    from table t0 
    join table t1 on t0.key = t1.key 
    where t0.column > t1.column 
    order by t0.column desc 
) 
where rownum <= 1 
;