Thread: sql-question: sum-function and subqueries?

sql-question: sum-function and subqueries?

From
peter pilsl
Date:

I have a question to sql and dont know exactely if this is the right
place to ask. If not I would be glad if anyone could point me to the
correct group/list/resource. Thnx.

I want to perform a sum-operation in a group by - query and want to
specify additionaly conditions when to sum.

like: having a table with colums x,y,z

select x,sum(y only if z is 'val1'),sum(y only if z is 'val2') from
table group by x;



real-world-example:

imagining the following table:

         date         | type  | count
---------------------+-------+-------
  2004-06-29 21:29:26 | index |     1
  2004-06-29 21:29:26 | pic   |    35
  2004-06-29 21:29:26 | raw   |     1
  2004-06-30 09:47:18 | index |     5
  2004-06-30 09:47:18 | index |     1
  2004-06-30 09:47:18 | index |     1
  2004-06-30 09:47:18 | index |     2
  2004-06-30 09:47:18 | pic   |    51
  2004-06-30 09:47:18 | index |     2
  2004-06-30 09:47:18 | index |     3

I want to perform a select and group by date and sum up count.

#select date,sum(count) from log group by date;
         date         | sum
---------------------+-----
  2004-06-29 21:29:26 |  37
  2004-06-30 09:47:18 |  65

so good so far. Now I'd like to group by date again, but got more
sum-columns depending on the type. So I want to have the sum over all
counts where type is raw, where type is index and where type is pic and
so on.
Is there away to do so in a single query? (and would it save resources
compared to four queries with simple where-conditions ?)

         date         | sum_total | sum_raw | sum_pic | sum_index
---------------------+--------------------------------------------
  2004-06-29 21:29:26 |  37       |   1     |  35     |    1
  2004-06-30 09:47:18 |  65       |   0     |  51     |   14

thnx a lot,
peter








--
http://www2.goldfisch.at/know_list
http://leblogsportif.sportnation.at

Re: sql-question: sum-function and subqueries?

From
Bruno Wolff III
Date:
On Thu, Jul 01, 2004 at 10:56:29 +0200,
  peter pilsl <pilsl@goldfisch.at> wrote:
>
>
> I have a question to sql and dont know exactely if this is the right
> place to ask. If not I would be glad if anyone could point me to the
> correct group/list/resource. Thnx.
>
> I want to perform a sum-operation in a group by - query and want to
> specify additionaly conditions when to sum.
>
> like: having a table with colums x,y,z
>
> select x,sum(y only if z is 'val1'),sum(y only if z is 'val2') from
> table group by x;

You can use CASE to do this. The CASE function goes inside the sum
function call similar to what you sketched out above.