使用多个HAVING子句从GROUP BY中选择MAX的COUNT(我认为)

时间:2014-02-07 00:48:02

标签: sql tsql group-by max having

我的表:

  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。

沙哑时间。

1 个答案:

答案 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' ;

SQL-Fiddle

进行测试