Re: Aggregates
От | Richard Huxton |
---|---|
Тема | Re: Aggregates |
Дата | |
Msg-id | 467A9299.7040203@archonet.com обсуждение исходный текст |
Ответ на | Re: Aggregates ("John D. Burger" <john@mitre.org>) |
Ответы |
Re: Aggregates
|
Список | pgsql-general |
John D. Burger wrote: > > On Jun 21, 2007, at 09:22, Richard Huxton wrote: > >> Naz Gassiep wrote: >>> Hi, >>> If I have a table with users and a table with messages, is it >>> possible to have a query that returns user.* as well as one extra column >>> with the number of messages they have posted and the data and time of >>> the last message? At the moment I am using a subquery to do this, >>> however it seems suboptimal. Is there a better way? >> >> Not really. You have three separate queries really: >> 1. User details >> 2. Total number of messages posted >> 3. Details on last message posted >> >> Unless you have a messaging-summary table that you keep up-to-date >> with triggers you're looking at a three-part query. > > Certainly except for the user details it could be a single GROUP BY with > several aggregate functions, something like: > > select user.userid, count(*), max(message.datetime) > from user join message using (userid) > group by user.userid; Ah, but this just includes the time of the last message, not its data. -- Richard Huxton Archonet Ltd
В списке pgsql-general по дате отправления: