Search Postgresql Archives

Re: Query help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/1/19 11:26 AM, John W Higgins wrote:
On Tue, Jan 1, 2019 at 11:06 AM Chuck Martin <clmartin@xxxxxxxxxxxxxxxx <mailto:clmartin@xxxxxxxxxxxxxxxx>> wrote:

    Sorry if this is too basic a question for this list, but I don't
    fully get how to use aggregates (sum()) and group-by together. I'm
    trying to get a list of transactions where the total for a given
    account exceeds a given number. I'm not sure an example is needed,
    but if so, consider this simplified data:

    accountid.   name
    1                  bill
    2.                 james
    3                  sarah
    4                  carl

    transaction
    id.         amount.      accountid.     name
    1.          50.              1                   bill
    2.          25.              2                   james
    3           35               4                   carl
    4.          75.              1                   bill
    5           25.              1                   bill
    6           50               3                   sarah

    results wanted-all transactions where account total >= 50

    id.         amount.      accountid.    name
    1.          50.              1                   bill
    3.          75.              1                   bill
    4           25.              1                   bill
    5           50               3                   sarah


You have 2 concepts here - identify the accounts with a total over 50 and then show the transactions for those accounts. I prefer CTEs here because they allow for better understanding (to me) of the steps involved. A subquery would work here as well.

with accounts_over_total as (
select accountid from transactions where sum(amount) >= 50 group by accountid)

Unfortunately there is a hitch in the above:(

select p_item_no from projection where sum(qty) > 100 group by(p_item_no); ERROR: aggregate functions are not allowed in WHERE

LINE 1: select p_item_no, sum(qty) from projection where sum(qty) >

select transactions.* from transactions join accounts_over_total on transactions.accountid = accounts.accountid

John

    I've tried to understand how to use GROUP BY and HAVING, but the
    penny won't drop. I keep getting errors saying that all columns in
    the SELECT have to also be in the GROUP BY, but nothing I've done
    seems to produce the correct results. I think because the GROUP BY
    contains multiple columns, so each row is treated as a group. It
    also is difficult to parse out since in the real world, many more
    tables and columns are involved.

    Chuck Martin
    Avondale Software



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux