关于SQL,如果一个表中的某个字段有重复值,重复值我只取一个应该怎么做呢

我的数据库A表里有USERNAME和TIMESTR两个字段,现在我要统计12月分每个人提交日报的次数(有的人一天提交多次,但只能算作是一次。我现在的语句是这样写的,sel... 我的数据库A表里有USERNAME和TIMESTR两个字段,现在我要统计12月分每个人提交日报的次数(有的人一天提交多次,但只能算作是一次。我现在的语句 是这样写的,
select username,count(*) from a
where datepart(month,timestr)=12
gorup by username
order by count(*)
这种写法的统计包涵了一天多于一次提交的数量。。求大侠们帮忙。。如何才能实现统计每天就一次的统计呢
感谢两位的回答,可是好像不对哦
我要显示的是一个月每人提交的总次数,但是若某一天有人交了3次,我也只算一次。。
仁兄,T1是什么意思哦。。我的SQL编程基础不是太扎实,能不能给我解释下呢。。谢谢
展开
 我来答
jyl_19
2011-01-20 · TA获得超过1002个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:1057万
展开全部
select username,count(*) from (select distinct username,timestr from a)t1
where datepart(month,timestr)=12
gorup by username
order by count(*)
用distinct吧,如果timestr 包含了时间,可以这样,
select username,count(*) from
(select distinct username,timestr=convert(varchar,timestr,112) from a)t1
where datepart(month,timestr)=12
gorup by username
order by count(*)
如果需要找每天都有的记录,可以加上having count(*) = 31
t1只是给 (select distinct username,timestr from a)这个查询起的别名,可以随便起,作用相当与把这个查询结果作为一个表名为t1的表来处理。
willyyw
推荐于2017-10-11 · TA获得超过652个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:409万
展开全部
用SQL嵌套比较好,SQL也比较清楚,
内层SQL,datepart(day,timestr)或convert 找到所有12月份,每个人提交日报的日期是每月的第几天,并生成一个字段,distinct确保只记录每天只保留一个 datepart(date,timestr)把每人的提交那一天找出来

外层SQL统计每个人有几天:
select username,count(*) from (select distinct username, datepart(dd,timestr) as userday from a
where datepart(mm,timestr)=12)
group by username
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chiconysun
2011-01-18 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2637万
展开全部
select username,count(*) from a
where datepart(month,timestr)=12
group by username
having count(*) = 1
order by 2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lqefn
2011-01-18 · TA获得超过2655个赞
知道小有建树答主
回答量:3345
采纳率:0%
帮助的人:1749万
展开全部
having count(*)= 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式