面试回来,肺都气炸了!
进去后,自信满满的做了到SQL提,接着跟HR一直聊着.
后来HR看了下答案说我的那道SQL题目做错了.
当时我就很奇怪不可能错的.
先附上SQL题目然后再记录下跟HR的奇葩交谈过程.
------解决方案-------------------- HR很多都是SB ,根本不懂技术,面试之前还要先跟你侃侃。 一个板砖直接拍迷糊了。。。。。。。。。
------解决方案-------------------- hr肯定是看了答案,你的和答案不一样。
关键是sql语句的写法变化很大,对的答案不止一个,所以他就以为你写错了。真是无语,这个应该直接让技术人员面试的。
------解决方案-------------------- 说句实话,楼主写的这个语句真不是人家要的答案。
------解决方案-------------------- HR还会技术啊,牛逼啊,你问问她怎么写才正确
------解决方案-------------------- 你的答案是有问题的,应该这样:
select ID,property,[date]
from (select *,rn=ROW_NUMBER() over(partition by property order by [date]) from tbpro)t
where rn<=2
and property in (select protype from tbpro group by property having count(id)>1)
------解决方案-------------------- 你的语句确实不是人家要的,人家要的是你先找出重复的记录,然后再从这些重复的记录里面,找到每种情况时间排前面的两个,你的答案是就输出所有重复中排在前面的两个
------解决方案-------------------- lz:
可能别人想考你
ROWNUMBER() OVER() 的用法
------解决方案-------------------- 1)分组
2)每组取两条最新记录
所以你的答案是错误的
------解决方案-------------------- 按property分组,按date升序排序取每组前两条,你的理解应该有问题
------解决方案-------------------- 分组取前N条百度一下到处都是,赶快来给我道歉吧。
------解决方案-------------------- 26 27楼的回复一下子让这帖变成内涵帖。。。。
------解决方案--------------------
难道是楼上面的?
敢问正确答案为何要加“where property in (select distinct(property) from tbpro)”。
我怎么感觉这个是不需要的呢,虽然不影响结果。
------解决方案-------------------- 引用: 骚年,你说说姐怎么奇葩了
这位高手怎么能是HR呢?HR怎么能这么厉害呢?!
------解决方案-------------------- 你理解题目真的理解错了。。这题没你想的那么简单,是各取前2条。。
------解决方案-------------------- HR的是正确的,你不理解题意
首先是Property有相同的才列出
其次是每个Property只列时间最早的前两条
------解决方案-------------------- 题目描述得非常清楚了,不知道楼主怎么理解的有歧义。而且你是被面试的,你干嘛教训HR呢,还是要低调谦虚点,毕竟是人家雇佣你,你是被雇佣的