If it's for SQL-Server, you can use windows aggregate functions:
; 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' ;
Tested at SQL-Fiddle