问题描述:
- 有一些数据是每天去重,然后进行求和,但是当你直接取很多天的时候如何去解决,每天去重这个问题呢,很明显,你不能直接对一个字段去重。假如第二天有和前一天一样的数据,那不就只有一条了,实际上,你应该取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是一个意思。
收工,干饭!!!