Thread: Cross-classified table
Hi, I'm looking for the correct syntax of getting a cross-classified table from my SELECT statement. Let's pretend I have this table: origin sex ---------------- USA male USA female China male China male UK male USA male and I want as result something like: male female USA 2 1 China 2 0 UK 1 0 How can I get this? Best regards, alex
The query : select origin, sex, count(sex) from table group by origin, sex; gives the result : origin | sex | count --------+--------+------- China | male | 2 UK | male | 1 USA | female | 1 USA | male | 2 (4 rows) Is it enought ? Bruno Alexander Pucher wrote: > Hi, > I'm looking for the correct syntax of getting a cross-classified table > from my SELECT statement. > > Let's pretend I have this table: > > > origin sex > ---------------- > USA male USA female > China male > China male > UK male > USA male > > > and I want as result something like: > > male female > > USA 2 1 China 2 0 > UK 1 0 > > > How can I get this? > > Best regards, > alex > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 7: don't forget to increase your free space map settings > -- Bruno LEVEQUE System Engineer SARL NET6D bruno.leveque@net6d.com http://www.net6d.com
> Hi, > I'm looking for the correct syntax of getting a cross-classified table > from my SELECT statement. > > Let's pretend I have this table: > > > origin sex > ---------------- > USA male > USA female > China male > China male > UK male > USA male > > > and I want as result something like: > > male female > > USA 2 1 > China 2 0 > UK 1 0 > > > How can I get this? > You can use below SQL SELECT origin, SUM( CASE WHEN (sex ='male') THEN 1 ELSE 0 END ) AS male, SUM( CASE WHEN (sex ='female') THEN 1 ELSE 0 END ) AS female FROM table1 GROUP BY origin Best regards, Muhyiddin A.M Hayat