Here’s one option using a subquery with 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
- SQL Fiddle Demo
This will also work if you don’t want to use a subquery:
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
- More Fiddle