descendente - MySQL cuenta diferente si las condiciones son únicas
order by descendente mysql (1)
Aquí hay una opción usando una subconsulta con DISTINCT
:
SELECT COUNT(*) gender_count,
SUM(IF(gender=''male'',1,0)) male_count,
SUM(IF(gender=''female'',1,0)) female_count
FROM (
SELECT DISTINCT tel, gender
FROM example_dataset
) t
Esto también funcionará si no desea utilizar una subconsulta:
SELECT COUNT(DISTINCT tel) gender_count,
COUNT(DISTINCT CASE WHEN gender = ''male'' THEN tel END) male_count,
COUNT(DISTINCT CASE WHEN gender = ''female'' THEN tel END) female_count
FROM example_dataset
Estoy tratando de crear una consulta que me diga cuántas mujeres y hombres distintos hay en un conjunto de datos determinado. La persona se identifica con un número ''tel''. Es posible que el mismo ''tel'' aparezca varias veces, ¡pero que el género de ''tel'' solo debe contarse una vez!
7136609221 - hombre
7136609222 - hombre
7136609223 - mujer
7136609228 - hombre
7136609222 - hombre
7136609223 - mujer
Este ejemplo de conjunto de datos daría lo siguiente.
Cuenta de género única total: 4
Cuenta total masculina única: 3
Total de mujeres únicas: 1
Mi intento de consulta:
SELECT COUNT(DISTINCT tel, gender) as gender_count,
COUNT(DISTINCT tel, gender = ''male'') as man_count,
SUM(if(gender = ''female'', 1, 0)) as woman_count
FROM example_dataset;
En realidad hay dos intentos allí. COUNT(DISTINCT tel, gender = ''male'') as man_count
parece devolver lo mismo que COUNT(DISTINCT tel, gender)
, no tiene en cuenta el calificador allí. Y la SUM(if(gender = ''female'', 1, 0))
cuenta todos los registros femeninos, pero no está filtrada por DISTINCT tels.