现有表结构:

CREATE TABLE `example_dataset` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`tel` bigint(11) DEFAULT NULL,

`gender` varchar(11) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

插入数据

INSERT INTO `example_dataset` (`id`, `tel`, `gender`)

VALUES

(2, 7136609221, 'male'), --'male'是男,'female'是女

(3, 7136609222, 'male'), (6, 7136609222, 'male'), (4, 7136609223, 'female'), (7, 7136609223, 'female'), (5, 7136609228, 'male');

现在sql记录里面有重复的。我想统计表中有多少人,多少男的,多少女的。

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;

显然结果是不对的。

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

这样结果是对的。但是我想如果example_dataset表的数据量比较大,子查询会影响效率。

最终答案:

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

mysql count distinct case when_统计符合条件的去重过的数量 - - count distinct if case相关推荐

  1. MyBatis+Mysql实现从记录表中统计符合条件的人数

    场景 某业务记录表中记录的所有员工的某记录. 要实现统计截止到现在为止的符合某些条件的人数.实现效果类似如下 注: 博客: https://blog.csdn.net/badao_liumang_qi ...

  2. oracle 算列总数,Oracle认证:Oracle统计符合条件列总数

    Oracle认证:Oracle统计符合条件列总数.最近在项目报表中需要一个查询语句,用来统计符合某一列条件的其它几列的个数. 比如有下面一个表结构: 需要在列D后面增加一列,统计在列A不为空,并且列B ...

  3. mysql 对表数据进行求和分组并在结果中筛选符合条件的数据 having group by count

    查询table表查询每一个班级中年龄大于20,性别为男的人数 select COUNT(*)as '大于20岁人数',classid  from Table1 where sex='男' group ...

  4. Excel 统计符合条件不重复的个数

    iamlaosong文 要求从货运明细中统计各省某日发货点数量,公式如下: =SUMPRODUCT((Sheet1!$L$2:$L$1747=B6) * (Sheet1!$M$2:$M1747=$A$ ...

  5. Mysql根据经纬度和距离检索符合条件的数据浅析

    假设已知坐标lat1,lng1,距离distance 方法1:定义数据库函数方法 DROP FUNCTION IF EXISTS `getDistance`; DELIMITER ;; CREATE ...

  6. SQL count和case when配合统计给定条件下不重复的记录数

    Iamlaosong文 1.我们知道,SQL语句中用count函数统计记录数量,配合distinct关键字可以统计非重复的记录数量.例如: select count(*), count(city_na ...

  7. mysql的条件求和函数_使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解...

    首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT date(create_time) AS '当天日期', sum(real_pr ...

  8. SQL中count和case when结合使用统计某个条件下不重复的记录数

    目录 一.统计某一种类型的不重复的个数 二.分组后再统计某一种类型的不重复的个数 ​三.分组后统计汇总的数据和某一种类型的不重复的个数 最近遇到一个问题,需要分组统计某种类型的金额总和跟该类型的记录数 ...

  9. mysql 求count和_MySQL的统计总数count(*)与count(id)或count(字段)的之间的各自效率性能对比...

    执行效果: 1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和coun ...

最新文章

  1. fastboot因为连接线影响出错
  2. Android下对Cookie的读写操作(附Demo)
  3. mongodb带认证的副本集搭建
  4. pollard_rho大数分解Java版
  5. sqli-labs过关笔记(Page-1:1-22关)
  6. 每日一题(10)—— 数组与指针
  7. Spark和机器学习整合
  8. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
  9. ionic4 富文本
  10. 第 6 章 工厂模式
  11. python数据分析需要哪些库-用python进行数据分析的五个最常用库
  12. 计算机网络实验室布线实验,网络综合布线实验室建设
  13. 【分享】深入浅出WPF全系列教程及源代码
  14. PDF转CAD工具怎么选择
  15. 【过关斩将】小伙子,请做一下自我介绍?
  16. #420 Div2 Problem B Okabe and Banana Trees (math 暴力枚举)
  17. 【CXY】JAVA基础 之 String
  18. 客户端iOS 的自动化测试
  19. 软考-信息系统项目管理师-项目风险管理
  20. 华东师范大学计算机科学与技术学科评估,重磅!计算机科学与软件工程学院软件工程学科在全国第四轮学科评估中获评A档...

热门文章

  1. linux 安装nfs 客户端,在CentOS 7上安装NFS服务器和客户端
  2. 计算机考研985院校不歧视,考研最不歧视的985大学有哪些
  3. ubuntu mysql开发_ubuntu linux mysql 开发模式与连接编译
  4. c语言位运算符的使用_C语言程序使用位运算符检查给定数字是否为回文
  5. 消息队列终极解决方案——Stream(上)
  6. 不吹牛逼,撸个注解有什么难的
  7. Adobe_Audition消除人声
  8. 手把手带你玩转Tensorflow 物体检测 API (4)—— 模型验证
  9. ASP.NET Web API中的返回值
  10. java给你的初步印象_Java之初印象