Re: Approach to extract top records from table based upon aggregate

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Approach to extract top records from table based upon aggregate
Дата
Msg-id CAKFQuwa4Dofum1iWrHJjhb-THmugn+xy0fVPLGcnfsTZ5RbEFw@mail.gmail.com
обсуждение исходный текст
Ответ на Approach to extract top records from table based upon aggregate  (droberts <david.roberts@riverbed.com>)
Список pgsql-general
On Mon, Nov 2, 2015 at 3:14 PM, droberts <david.roberts@riverbed.com> wrote:
Hi, I have a table that contains call records.  I'm looking to get only
records for users who made the most calls over a particular time duration in
an efficient way.

calls()

time,  duration,   caller_number, dialed_number



-- query to get top 10 callers
  select caller_number, count(1) from calls group by caller_number order by
calls desc limit 10

--my current query to get those callers

select * from call where caller_number in (above query)


It works but I was hoping for something a little more efficient if anyone
has an idea.

​I don't think there is anything that is "a little more efficient" (implying, only a bit harder to implement).

You can probably get significantly faster by combining various forms of pre-computation and caching.  It is likewise significantly more complex to implement.

​David J.

В списке pgsql-general по дате отправления:

Предыдущее
От: droberts
Дата:
Сообщение: Approach to extract top records from table based upon aggregate
Следующее
От: Jeff Janes
Дата:
Сообщение: Re: Is there bigintarray?