回 帖 发 新 帖 刷新版面

主题:[原创]如何构造该SQL语句?

以下是表结构



if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[find]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[find]
GO

CREATE TABLE [dbo].[find] (
 [username] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
 [ip] [varchar] (25) COLLATE Chinese_PRC_CI_AS NULL ,
 [login_time] [datetime] NULL ,
 [client_time] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
 [update_time] [varchar] (700) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO
[url=http://8001.3126.net/1.jpg]点此可以看到该表数据示例[/url]

(注,该表无主键,一个用户可以有多条记录,用户每更新一次程序,就会在 update_time 字段中记录下更新的时间。现主要想获得指定时间段内更新程序次数最多的用户,并按顺序排列显示)

用SQL 语句 对该表进行操作,得出结果能显示出某指定时间段内(主要指login_time )  update_time 字段记录不为空的用户 。

比如我输入 2007-0710 到2007-0715 这两个时间段,看以下结果,我就知道 0710 到 07-15 时间段内  update_time  字段不为空的用户中 888zzb124  总共有 15 次  意味着 888zzb124  这个用户在 指定时间内 更新了 15次 ,,第二是 777zzb124   更新了13次  ,第三是 用户名为66zsb124   有11次  …… 主要目的掌握指定时间段内所有用户 更新 的次数。

username                 counts 

888zzb124                 15

777zzb124                 13

66zsb124                   11

235223zzb124              8

99234erwzzb124            5

回复列表 (共2个回复)

沙发

select username, count(update_time) as counts from 表
where update_time between '时间1' and '时间2'
group by username
order by counts desc

注意:update_time应为datetime类型。

 [client_time] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
 [update_time] [varchar] (700) COLLATE Chinese_PRC_CI_AS NULL 

varchar500,varchar700,这是什么东东啊?

板凳

select username , count(*) counts from
(
  select * from find where update_time>='2007-07-10' and update_time<='2007-07-15'
) t
group by username 
order by counts desc

我来回复

您尚未登录,请登录后再回复。点此登录或注册