关于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编程基础不是太扎实,能不能给我解释下呢。。谢谢 展开
select username,count(*) from a
where datepart(month,timestr)=12
gorup by username
order by count(*)
这种写法的统计包涵了一天多于一次提交的数量。。求大侠们帮忙。。如何才能实现统计每天就一次的统计呢
感谢两位的回答,可是好像不对哦
我要显示的是一个月每人提交的总次数,但是若某一天有人交了3次,我也只算一次。。
仁兄,T1是什么意思哦。。我的SQL编程基础不是太扎实,能不能给我解释下呢。。谢谢 展开
4个回答
展开全部
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的表来处理。
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的表来处理。
展开全部
用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
内层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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select username,count(*) from a
where datepart(month,timestr)=12
group by username
having count(*) = 1
order by 2
where datepart(month,timestr)=12
group by username
having count(*) = 1
order by 2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
having count(*)= 1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询