首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

按日期统计当天注册不同类型的用户数量的sql (假设为两种类型),该怎么解决

2012-01-13 
按日期统计当天注册不同类型的用户数量的sql (假设为两种类型)按日期统计当天注册不同类型的用户数量的sql

按日期统计当天注册不同类型的用户数量的sql (假设为两种类型)
按日期统计当天注册不同类型的用户数量的sql   (假设为两种类型)  

数据如下  
userid   username   addtime
11             abc           2008-8-8   11:20:30  
12             a               2008-8-8   11:21:30  
13             a               2008-8-8   11:31:30  
14             a               2008-8-9   11:50:30  

要求结果   (分类是   username的长度> 1)的一类   否则为别一类
addtime         type1     type2  
2008-8-8         x             y  
2008-8-9         x             y  
求高手写出sql语句  
要求  
1.username   是varchar
2.考虑性能

[解决办法]

SQL code
select convert(varchar(10),addtime , 120) addtime,  sum(case when len(username) > 1 then 1 else 0 end) type1,  sum(case when len(username) = 1 then 1 else 0 end) type2from tbgroup by convert(varchar(10),addtime , 120)
[解决办法]
SQL code
select convert(varchar(10),addtime , 120) addtime,  count(case when len(username) > 1 then 1  end) type1,  count(case when len(username) = 1 then 1  end) type2from tbgroup by convert(varchar(10),addtime , 120)
[解决办法]
SQL code
create table tb(userid int, username varchar(10) , addtime datetime)insert into tb values(11 , 'abc', '2008-8-8 11:20:30') insert into tb values(12 , 'a'  , '2008-8-8 11:21:30') insert into tb values(13 , 'a'  , '2008-8-8 11:31:30') insert into tb values(14 , 'a'  , '2008-8-9 11:50:30') goselect convert(varchar(10),addtime , 120) addtime,  sum(case when len(username) > 1 then 1 else 0 end) 'type1(长度大于1)',  sum(case when len(username) = 1 then 1 else 0 end) 'type2(长度等于1)'from tbgroup by convert(varchar(10),addtime , 120)drop table tb/*addtime    type1(长度大于1) type2(长度等于1) ---------- ------------ ------------ 2008-08-08 1            22008-08-09 0            1(所影响的行数为 2 行)*/ 

热点排行