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 | 
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 по дате отправления: