MySQL去重统计

五迷三道 提交于 2019-12-23 18:17:50
    场景是这样的,要对某一个表里面的数据进行统计,但是可能会有重复数据,下面就是针对person 表,查询表中男女的去重统计,假如有的名字重复了。重名的不查出来
SELECT
     count( CASE WHEN p.sex= "01" THEN 1 ELSE NULL END ) AS '男',
     count( CASE WHEN p.sex= "02" THEN 1 ELSE NULL END ) AS '女'
 FROM
     (
     SELECT DISTINCT
         t.name,
         t.sex
     FROM
         person t
     ) p;

       先用 DISTINCT查询出name和sex当做临时表,DISTINCT会把整个要查询的东西作为去重的条件,也就是你查什么,就把什么当做去重条件,这里把name加上,就是把名字和性别当做去重条件了,这样名字和性别相同的就去重了。这时候把查询结果当做临时表,再根据性别做统计就行了。试过了很多方式,本来用case when then count很复杂而且不灵活,就改成了这种方式,简洁明了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!