PDA

View Full Version : [SQL] - query count con where condition


FastSpirit
17-02-2009, 14:14
Salve,
ho un tabella fatta in questo modo:

professione | sesso
-------------------
impiegato | M
pensionato | M
casalinga | F
dirigente | M
....
-------------------

dovrei fare un SELECT sulla tabella in modo che mi produca la distribuzione del sesso per professione in questo modo:

professione | M | F
-----------------------
impiegato | 3 | 4
pensionato | 5 | 4
casalinga | 6 | 8
dirigente | 7 | 4

é possibile?
Se faccio una count in where

SELECT job AS professione, count( gender ) AS M FROM people WHERE gender = 'M' GROUP BY job, gender

Non mi tiene conto delle femmine, mentre una UNION mi duplica le professioni.

c'è un modo per ottenere quel risultato?

Grazie

cecce88
17-02-2009, 14:17
se provi a fare alla fine un GROUP BY sesso,professione...prova

FastSpirit
17-02-2009, 14:22
se faccio

SELECT job, gender, COUNT( * )
FROM people
GROUP BY job, gender

mi divide maschi e femmine ma su linee diverse, replicando la professione:
job gender COUNT(*)
Dirigente F 5
Dirigente M 9
Disoccupato F 14
Disoccupato M 7


:(

-MiStO-
17-02-2009, 14:29
a me banalmente viene in mente una join su professione delle di due tabelle, una con i conteggi maschili e l'altra con quelli femminili :ciapet:

FastSpirit
17-02-2009, 14:32
creando una vista della tabella potrei fare una Join tra le due, questa sarebbe una soluzione un pò articolata, ma penso che funzionerebbe.
Sfortunatamente dovrei riuscirci con una sola query!
(ammesso che sia possibile)

FastSpirit
17-02-2009, 14:36
trovato:

select job,
sum(if(gender='M',1,0)) as uomini,
sum(if(gender='F',1,0)) as donne
from people
group by job


grazie a
nicola75ss

john_revelator
17-02-2009, 14:46
Prego. Qui sono sotto altre vesti. :D