Calculation of per Capita on-the-fly - problems with SQL syntax

Поиск
Список
Период
Сортировка
От Stefan Schwarzer
Тема Calculation of per Capita on-the-fly - problems with SQL syntax
Дата
Msg-id BAD0F6D2-57E7-4A5B-AD2B-1EB55CFBD441@grid.unep.ch
обсуждение исходный текст
Ответы Re: Calculation of per Capita on-the-fly - problems with SQL syntax
Список pgsql-general
Hi there,

I need to calculate per Capita data on-the-fly. My table for a given
variable looks like this:

     year    |    value     |    id_country
---------------------------------------
       2001    |     123       |   1
       2002    |     125       |   1
       2003    |     128       |   1
       2004    |     132       |   1
       2005    |     135       |   1

       2001    |     412       |   2
       2002    |     429       |   2
       2003    |     456       |   2
       2004    |     465       |   2
       2005    |     477       |   2


Now, I can't get the calc working correctly. I use the query below,
but a) it just takes too much time to come up with a result; and b)
the results has three lines for each country,
    one with a value for y_2003 and a NULL for y_2002
    one with a NULL for y_2003 and a value for y_2002
    one with a NULL for both y_2003 and y_2002


SELECT DISTINCT
    ( CASE WHEN d.year=2003 AND pt.year=2003 AND pt.value <> '0' AND
pt.value IS NOT NULL THEN d.value / pt.value ELSE NULL END ) AS y_2003,
    ( CASE WHEN d.year=2002 AND pt.year=2002 AND pt.value <> '0' AND
pt.value IS NOT NULL THEN d.value / pt.value ELSE NULL END ) AS y_2002,
    c.name
FROM
    public_multiple_tables.agri_area AS d
LEFT JOIN
     public_multiple_tables.pop_total AS pt ON pt.id_country = d.id_country
LEFT JOIN
    countries_view AS c ON c.id = d.id_country
ORDER BY
    name ASC


What am I doing wrong? Thanks for any advice,

Stef




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

Предыдущее
От: Karsten Hilbert
Дата:
Сообщение: XMIN semantic at peril ?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: XMIN semantic at peril ?