株百测试题之SQL

图片

要求语句通用性,LGID相同OPER不同的情况,表内无主键,登录退出时间要正确判断

本来以为很简单,结果要符合要求时却感觉棘手。从这题颠覆了以前的思维,从以前看到题目直接上手完全针对题目的语句,到现在了解到了SQL语句的一个新名词:通用性,从这简单的三张表要写出完美的语句真不是那么简单的事。O(∩_∩)O~这次除了会了一些asp以外,收获最大的就是这道题目了。了解到SQL在实际应用中并不是简简单单那书本上浅显易懂的概念语句。

下面附上SQL语句

第一题


/***************************one****************************/
select a.LGID as LGIN,a.OPTIME as INOPTIME,b.OPTIME as OUTOPTIME, a.OPER from (
select LGID,(case OPNAME when 'LOGIN' then OPTIME  end) as OPTIME,OPER from login
) a inner join (select LGID,(case OPNAME when 'LOGOUT' then OPTIME  end) as OPTIME,OPER from login
) b
on (a.LGID=b.LGID and a.OPER=b.OPER and a.OPTIME<=b.OPTIME)
where (a.OPTIME is not null  and b.OPTIME is not null)


 

第二题


/**************************************two*********************************/

select a.LGID as LGIN,a.OPTIME as INOPTIME,a.OPER from
(select LGID,OPTIME,OPER,OPNAME from login where OPNAME='LOGIN')  a
left join
(select LGID,OPTIME,OPER from login where OPNAME='LOGOUT') b
on a.LGID=b.LGID and a.OPER=b.OPER  and a.OPTIME<=b.OPTIME where (b.OPTIME is null) order by a.LGID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值