tipos descendente mysql sql count distinct

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.