问题描述:

  1. 有一些数据是每天去重,然后进行求和,但是当你直接取很多天的时候如何去解决,每天去重这个问题呢,很明显,你不能直接对一个字段去重。假如第二天有和前一天一样的数据,那不就只有一条了,实际上,你应该取2条的

在编写sql的过程中,我想对一个两列同时去重,求数量于是用了

count distinct(时间,xxx2)

原因分析:

  • 后面发现在oracle 其实并不支持这么操作
  • 但在mysql里面,你是可以的,所以我在操作的时候直接套过来用,发现并不行。

解决方案:

后面细想了一下,我反正都要求总量,又不要数据,我把两列拼起来,这样,再取值不久好了,于是就变成了怎么连接这两列,这样去重取值就保证了
2种方法

  • ||
    oracle 操作
select trunc(sysdate,'dd')||'hello' from dual

结果
在这里插入图片描述
如果要进行count distinct

select count (distinct (trunc(sysdate,'dd')||'hello')) from dual

就要这样写了

  • concat
    concat就很简单了
select count (distinct concat(trunc(sysdate,'dd'),'hello')) from dual

其实这个地方,因为拼的是时间,可以这样操作,假如并不是按时间来,那么直接distinct就行了,也不用这么麻烦,都得看自己的实际情况了。

注意:这里说一下,mysql中,并没有符号“||”拼接这种说法,在mysql中“||”代表的是逻辑或,和OR是一个意思。
在这里插入图片描述
收工,干饭!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐