Re: Joins with aggregate data

Поиск
Список
Период
Сортировка
От Michael Fuhr
Тема Re: Joins with aggregate data
Дата
Msg-id 20050708025648.GA53539@winnie.fuhr.org
обсуждение исходный текст
Ответ на Joins with aggregate data  (Paul McGarry <paul.mcgarry@gmail.com>)
Ответы Re: Joins with aggregate data  (Paul McGarry <paul.mcgarry@gmail.com>)
Список pgsql-general
On Fri, Jul 08, 2005 at 11:45:59AM +1000, Paul McGarry wrote:
> I basically want a query which will give me:
> ======
>  grp | count(good) |  sum(good)  | count(bad) |  sum(bad)
> -----+-------------+-------------+------------+----------
>    3 |           0 |             |          1 |   -5.00
>    2 |           1 |        2.50 |          0 |
>    1 |           2 |       15.00 |          2 |  -12.50
> ======
> (possibly with zeros rather than nulls but doesn't matter)

How about doing the aggregates in separate subqueries and then doing
the outer join?  Something like this:

SELECT coalesce(g.grp, b.grp) AS grp,
       coalesce(g.count, 0) AS countgood,
       coalesce(g.sum, 0) AS sumgood,
       coalesce(b.count, 0) AS countbad,
       coalesce(b.sum, 0) AS sumbad
FROM
 (SELECT grp, count(good), sum(good) FROM lefty GROUP BY grp) AS g
FULL OUTER JOIN
 (SELECT grp, count(bad), sum(bad) FROM righty GROUP BY grp) AS b USING (grp);

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

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

Предыдущее
От: Paul McGarry
Дата:
Сообщение: Joins with aggregate data
Следующее
От: Paul McGarry
Дата:
Сообщение: Re: Joins with aggregate data