【发布时间】:2013-02-22 05:02:44
【问题描述】:
我有一张如下表:
我想按 DAY 来计算 PageURL 和 GROUP 列中 say "ab" 和 "cd" 的出现次数(即,无论一天出现多少次,都算作 1)。
ID User Activity PageURL ActDateTime
1 Me act1 abcd 2013-01-17 19:09:01.040
2 Me act2 cdab 2013-01-17 19:09:06.613
3 You act2 xyza 2013-01-30 16:10:50.177
4 Me act3 xyab 2013-01-30 10:35:09.037
我想要 2 列...1 用于计数“ab”,1 用于计数“cd”。
在上面的例子中,“ab”有 3 个计数,但我只会算作 2,因为前 2 个发生在同一天(所以算作 1)。
同样,PageURL 列中的“cd”有 2 个计数,但我只想算作 1,因为也发生在同一天。
此外,我想按月份分组,即 Jan-12、Feb-12、March-12、April-12 ...等。
非常感谢一些帮助和建议。谢谢!
这是我到目前为止所做的(但它没有考虑按 DAY 分组)
SELECT USER,
department,
activity,
[MonthYear] = DATENAME(mm, ActDateTime)+ ' - ' +
DATENAME(yy, actdatetime),
[ab] = sum(case when pageURL like '%ab%' THEN 1 else 0 END),
[cd]= sum(CASE WHEN pageURL LIKE '%cd%'THEN 1 ELSE 0 END)
FROM activityLog
GROUP BY USER,
department,
activity,
DATENAME(mm, ActDateTime)+ ' - ' +
DATENAME(yy, ActDateTime)
ORDER BY USER,
department,
activity,
DATENAME(mm, ActDateTime)+ ' - ' + DATENAME(yy, ActDateTime)
【问题讨论】:
标签: sql sql-server sql-server-2008 group-by