我的表:
id user area login colour
------------------------------------------
1 2 7 2014-01-05 red
2 1 7 2014-01-03 green
3 3 7 2014-01-08 red
4 2 7 2014-01-22 green
5 3 7 2014-01-15 amber
6 1 7 2014-01-12 green
7 3 7 2014-01-23 red
8 4 7 2014-01-05 red
9 3 7 2014-01-12 green
10 4 7 2014-01-28 amber
11 1 4 2014-01-06 amber
从每个用户的列表中最后一次登录(即MAX(登录)) 我需要从区域7开始使用绿色
计算这些登录从给定的表中,ID 4,6和9具有区域7的最新登录日期和颜色绿色,因此我希望我的查询返回其计数为3。
沙哑时间。
答案 0 :(得分:0)
如果是SQL-Server,则可以使用Windows聚合函数:
; WITH cte AS
( SELECT login, area, colour,
maxlogin = MAX(login) OVER (PARTITION BY [user])
FROM dbo.logins
)
SELECT COUNT(*) AS cnt
FROM cte
WHERE maxlogin = login
AND area = 7
AND colour = 'green' ;
进行测试