Carol Cheung wrote:
Hello,

Here's my table:

db=# select * from tester order by birth_year;
 birth_year | salary
------------+--------
       1946 |  78000
       1949 |  61000
       1951 |  58000
       1953 |  56000
       1958 |  52000
       1962 |  50000
       1965 |  45000
       1967 |  60000
       1968 |  57000
       1970 |  47000
       1972 |  32000
       1973 |  42000
(12 rows)

How can I display the average salary grouped by decade of birth year?
That is, is it possible to display the average salary of those born in the 1940's, the average salary of those born in the 1950's, average salary of those born in the 1960's, and those born in the 1970's, all in one result table?
Something like:

decade | average(salary)
-------+-----------------
  1940 |  69500
  1950 |  53333.33
  1960 |  53000
  1970 |  40333.33


Assuming birth_year is an integer (if it's not, then just change the query to cast it to one before the division), one possible approach might be:

    select birth_year / 10 || '0' as decade,
        avg(salary::numeric) as average_salary
    from tester
    group by decade
    order by decade asc;

-Jon

--
Senior Systems Developer
Media Matters for America
http://mediamatters.org/

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to