我有一个查询,其中我想返回已登录一个月的用户数量,而不会在下个月重复记录.
如果用户已登录4月和5月,则仅显示4月的一条记录.这就是我到目前为止所拥有的.
SELECT DISTINCT (a.userid), EXTRACT(MONTH FROM a.loginTime) as month
FROM login_audit a LEFT JOIN user u on u.userid = a.userid
WHERE a.loginTime <= '2012-12-31 11:59:59'
AND a.loginTime >= '2012-01-01 00:00:00'
GROUP BY month
Run Code Online (Sandbox Code Playgroud)
到目前为止,记录正在回归
userid month
1 1
2 1
1 2
3 2
Run Code Online (Sandbox Code Playgroud)
在这种情况下,用户1即将进入1月和Februray.我想要省略那条记录.无论是那个还是积累了.像这样:
或
userid month
1 1
2 1
3 2
Run Code Online (Sandbox Code Playgroud)
要么
userid month
1 1
2 1
1 2
2 2
3 2
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的.如果您想进一步澄清,请问我任何问题.非常感谢!
看不到你需要表用户的地方......
对于第一个"通缉情景":
SELECT
a.userid,
MIN(EXTRACT(MONTH FROM a.loginTime)) as month
FROM login_audit a
WHERE a.loginTime <= '2012-12-31 11:59:59' AND a.loginTime >= '2012-01-01 00:00:00'
GROUP BY a.userid
Run Code Online (Sandbox Code Playgroud)