Re: How to get single raws for sums in a summary table? - Mailing list pgsql-novice

From Richard Broersma Jr
Subject Re: How to get single raws for sums in a summary table?
Date
Msg-id 312710.93639.qm@web31801.mail.mud.yahoo.com
Whole thread Raw
In response to How to get single raws for sums in a summary table?  (Ennio-Sr <nasr.laili@tin.it>)
Responses Re: How to get single raws for sums in a summary table?  (Richard Broersma Jr <rabroersma@yahoo.com>)
List pgsql-novice
> I would like to get a summary table from an original one having the
> following structure:
>
>             Table "public.test_t"
>   Column  |         Type          | Modifiers
> ----------+-----------------------+-----------
>  cod_rif  | character(3)          |
>  titolo   | character varying(20) |
>  quantity | integer               |
>  cmf      | double precision      |
>  u_qq     | double precision      |
>  mont     | numeric(10,4)         |
>  vend     | boolean               |
>
> and a few records like the following (listing purchases and sales for
> each item):
>
> => select * from test_t;
>
>  cod_rif | titolo | quantity |   cmf   |  u_qq  |  mont   | vend
> ---------+--------+----------+---------+--------+---------+------
>  7       | aaa    |     2500 |  25.455 |      0 | 60.0897 | f
>  34      | bbb    |     -700 |       0 |      0 |  0.0000 | t
>  28      | bbb    |     2700 |   3.862 |    4.6 |  4.1957 | f
>  33      | ccc    |    10000 |    4.36 |      0 |  4.3600 | f
>  30      | ccc    |     5000 |   1.717 |  1.489 |  1.7170 | f
>  6       | bbb    |     -500 |   2.703 |  4.757 |  3.7151 | f
>  3       | bbb    |      500 |   6.057 | 10.129 | 18.7311 | f
>  32      | ddd    |     1500 | 0.55896 |  1.119 |  0.5590 | f
>  26      | aaa    |    -1000 | 6.11098 |  6.176 |  6.1110 | t
>  11      | ddd    |    -1500 |  10.537 |  4.021 | 20.5815 | t
> (10 rows)
>
> The 'summary table' should look more or less like this:
>
>  cod_rif | titolo | quantity |   cmf   |  u_qq  |  mont   | vend
> ---------+--------+----------+---------+--------+---------+------
>  any     | aaa    |     1500 |  25.455 |  6.176 | 60.0897 | f
>  any     | bbb    |     2000 |       0 |  4.757 |  4.1957 | t
>  any     | ccc    |    15000 |    4.36 |  1.489 |  1.7170 | f
>  any     | ddd    |        0 | 0.55896 |  1.119 | 20.5815 | f
> (4 rows)
>
> With a:
>
> => select distinct on (sum(quantity))  titolo, sum(quantity) from test_t group by titolo;
>
> I get single rows for each item
>
> titolo |  sum
> --------+-------
>  ddd    |     0
>  aaa    |  1500
>  bbb    |  2000
>  ccc    | 15000
> (4 rows)
>
> but when I include any other field in the query the number of raws
> returned grows to include all the original lines (because the other
> fields have distinct values).
>
> Do you have any suggestion to achieve the result I want?

This is untested. Also I am not sure that this is what you want, but I do not know how you arrive
at the values in your summary table.

select
        distinct on (titolo,cmf,u_qq,mont,vend)
        'any' as cod_rif,
        titolo,
        sum(quantity),
        cmf,
        u_qq,
        mont,
        vend,
from
        test_t
group by
        titolo,
        cmf,
        u_qq,
        mont,
        vend
;

pgsql-novice by date:

Previous
From: "A. Kretschmer"
Date:
Subject: Re: How to get single raws for sums in a summary table?
Next
From: Richard Broersma Jr
Date:
Subject: Re: How to get single raws for sums in a summary table?