一道很有趣的面试题——————SQL

今天去面试,有一道SQL题纠结了很久,可惜最后没能写对,回家就建表插数据来调试SQL,现在写出来,以让自己以后无聊时研究。
题目如下:客户每访问一次浏览器,就会向数据库B表中插入一条数据,
表结构如下

求依次显示IP,用户登录次数,用户点击次数.
当时看完一脸蒙逼,回家调试后才开好,现给出两种答案:
答案一:
select access_ip,sum(num1),sum(num2) from
(
select access_ip ,count(*) num1,0 num2 from
(select access_ip,count(*) num1 from b group by access_ip,access_sessionId) group by access_ip
union all
select access_ip ,0 num1,count(*) num2 from b group by access_ip
)group by access_ip
答案二:
select access_ip,sum(num1),sum(num2) from
(
select access_ip ,count(*) num1,0 num2 from
(select distinct access_ip,access_sessionId from b) group by access_ip
union all
select access_ip ,0 num1,count(*) num2 from b group by access_ip
)group by access_ip

后是挺有趣的一道题目,逻辑稍复杂些,但字段少,所以难度中等吧,会了它,以后再写SQL就会感觉容易很多了。
挺感谢之前自己做过ERP的仓储模块,那SQL语句写的,过个年回去我就完全不知道之前自己是怎么写出它们的,不过那里写的复杂SQL对逻辑锻炼还是不错的。

猜你喜欢

转载自blog.csdn.net/qq_39172525/article/details/78691539
今日推荐