这个问题困绕本人很久了。sql语言能力不够

MySql 码拜 9年前 (2016-07-12) 997次浏览
这个问题困绕本人很久了。sql语言能力不够
有登录日志表 表里有id,loginTime
看到这个问题的第一眼就是case when ,但是以本人的sql水平只能写出这样的sql了。
select t.ID,t
COUNT(*)
from
t_login_log t
where
DATEDIFF(SYSDATE(),t.loginTime)<7
GROUP BY t.ID
HAVING COUNT(*)>2
求帮助啊!
解决方案

90

你的a、b的数据有问题,a里面都没有oid为1的数据,你在结果集是怎么会有1的结果呢?
下面这个代码,应该可以:

select a.oid,
       case when count(case when status=1 then 1 end) >=1 then "S" 
	        when count(case when DATEDIFF(SYSDATE(),a.Time)<30 then 1 end) >=1 then "A" 
	        when count(case when DATEDIFF(SYSDATE(),a.Time)<60 then 1 end) >=1 then "B" 
	        when count(case when DATEDIFF(SYSDATE(),a.Time)<60 then 1 end) =0 then "C" 
		    else "E" 
	   end lev          
from a 
left join b on a.oid=b.oid
where DATEDIFF(SYSDATE(),a.time)<61  
GROUP BY a.oid;

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明这个问题困绕本人很久了。sql语言能力不够
喜欢 (0)
[1034331897@qq.com]
分享 (0)