按日期统计当天注册不同类型的用户数量的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.考虑性能
[解决办法]
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)
[解决办法]
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)
[解决办法]
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 行)*/