I think what you are talking about could be called a 'crosstabulation' or
a crosstab.
Their are some tutorials about making cross-tabs using perl. I have used
them a lot, and they are really great.
I tend to stack up lots of IF statemens...
Table1
month person sex sales
1 a m 10
1 b f 20
1 c m 30
2 a m 40
2 b f 50
2 c m 60
select
month,
sum(if(sex='m',sales,0)) as male_sales,
sum(if(sex='f',sales,0)) as female_sales,
sum(sales) as total
from
Table1
group by
month;
This would give (I think)...
month male_sales female_sales total
1 40 20 60
2 100 50 150
You could easily add a...
count(distinct(if(sex='m',person,NULL))) as total_men,
count(distinct(if(sex='f',person,NULL))) as total_women,
to create average sales for men and women, or anything else you want.
Does that look right?
On Fri, 8 Apr 2005, Jacob, Raymond A Jr wrote:
>Question: I frequently would like to summarize the results of my query in
>heiarchical layout also
>known as a Pivot table.
>Here is an example of what I would like output. NULL will be printed as a
>space
>when output.
>
>sum of broken| source of | qty |reseller of |qty |customer with
>|qty by
> bolts |broken bolts|regional |broken bolts|reseller |broken bolts
> |customer
>-----------------------------------------------------------------------------
> 100 | NULL |NULL |NULL | NULL |NULL
> |NULL
>(100/NULL) | US | 75 |NULL | NULL |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |ACME | 35 |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |(ACME/NULL) |(35/NULL)|Barney Rubble |20
>(100/NULL) | US | 75 |NULL | NULL |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |ACME | 35 |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |(ACME/NULL) |(35/NULL)|Betty Rubble |5
>(100/NULL) | US | 75 |NULL | NULL |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |ABLE | 25 |NULL
>|NULL
>(100/NULL) | (US/NULL) |(75/NULL) |(ABLE/NULL) |(25/NULL)|Sponge Bobble |20
>(100/NULL) | MEXICO | 15 |NULL | NULL |NULL
>|NULL
>(100/NULL) | (MEX/NULL) |(15/NULL) |TIPPY | 12 |NULL
>|NULL
>(100/NULL) | (MEX/NULL) |(15/NULL) |(ACME/NULL) |(12/NULL)|Juan Pepe |7
>
>
>100 * * * * * *
>* US 75 * * * *
>* * * ACME 35 * *
>* * * * * Barney Ruble 20
>
>Where * represents NULL or a Primary Key.
>
>How does one build a pivot table?
>from tables such as:
>
>factory_parts table
> ::{
>part no,
>plant,
>qty_manufactured
>plant name
>}
>reseller_parts table
> ::{
>part no
>plant
>qty received
>cost
>reseller name
>reseller id
>
>}
>customer_parts table
> ::{
>reseller id
>part no
>plant
>qty sold
>qty recvd
>customer id
>customer name
>}
>
>Ooops now the light bulb comes on
>I would do:
> select factory_parts.plant name,
> reseller_parts.reseller_name
> customer_parts.customer_name,
> customer_parts.qty_recvd
> from factory_parts,reseller_parts,customer_parts
> where customer_parts.part_no == 'broken_bolt' AND
> ( customer_parts.part_no == reseller_parts.part.no AND
> customer_parts.part_no == factory_parts.part.no )
>
>Now the question becomes how does one construct the aggregate columns
>representing the sum of bolts produced by the company,made at the plant,
>shipped to the reseller and sold to the customer,
>then join those aggregate columns? Any suggestions?
>
>Thank you,
>Raymond
>
>
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]