我有一个计算总user_id的查询 但我希望它能得到每个月/每年的计数 使用列start_date。
start_date是agentdispodetail和datetype中的一个列。
start_date通常是这样的: 2014-11-21 14:47:15.680
select distinct user_id, count(*) as total_id
from agentdispodetail
group by user_id
我使用的是sql 2012。
答案 0 :(得分:1)
select user_id, year(start_date), month(start_date), count(*) as total_id
from agentdispodetail
group by user_id, year(start_date), month(start_date)
order by user_id, year(start_date), month(start_date)
答案 1 :(得分:0)
你说的是
select year = datepart( year ,start_date ) ,
month = datepart( month , start_date ) ,
N = count( distinct user_id )
from ...
where ...
group by datepart( year , start_date ) ,
datepart( month , start_date )
order by 1,2
另一种技术使用了一点日期算法:
select start_date = dateadd(day ,
1-datepart(day,start_date) ,
convert(date,start_date)
) ,
N = count( distinct user_id )
from ...
where ...
group by dateadd(day, 1-datepart(day,start_date) , convert(date,start_date) )
order by 1
如果表架构将列user_id
作为唯一列 - 它是表的主键或具有唯一索引 - 您可以省略distinct
关键字。