2 mr bufu Mr_Bufu 于 2016.03.30 12:01 提问

请问下sql怎么按分钟去重复呢,注意是sqlserver

一张表有 recordid name createtime 三个字段

现在有很多数据,比如一个人在一分钟内记录了好多次数据
比如 1 "Simba1" 2016-01-01 08:09:11.000
2 "Simba1" 2016-01-01 08:09:21.000
3 "Simba1" 2016-01-01 08:09:31.000
4 "Simba2" 2016-01-02 08:09:11.000
5 "Simba2" 2016-01-02 08:09:12.000

现在需要做统计,一个name一分钟内的数据只算一次,怎么做去重复呢?
我试了distinct和group by 都不管用。
求告知

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.03.30 12:16
先把日期格式化到分钟,然后在distinct,下面是oracle的
 select distinct recordid,name,createtime from(
  select recordid,name,to_char(createtime,'yyyy-MM-dd HH:mm') as createtime from 表名
)
Mr_Bufu
Mr_Bufu   2016.03.30 13:38

sqlserver中,distinct的话,好像是整行的,只要有一个字段不一样就去不了重复图片说明

我希望的效果是同一个人同一分钟的只记一次,但所有字段都要查

Mr_Bufu
Mr_Bufu 回复danielinbiti: 但业务上需要那个流水id呢
一年多之前 回复
danielinbiti
danielinbiti 去掉recordid,只要name和createtime,也就是只要distinct ddd,userid
一年多之前 回复
jingshaohui
jingshaohui   2016.03.30 15:16

图片说明
你要的结果出来的了,上面的表示初始表,下面的是你要的结果

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!